Tuesday 21 April 2015

Eclipse force.com IDE shortcuts

  •     Short roots
     
    • Open the file -> Right Click -> Compare With -> Local History -> Select the Revision Time -> it will open a comparison window.
    •     Use F12 to quickly activate the editor.
    •     Use CTRL+H to search the files.
    •     Use CTRL+L to navigate to the desired line number. This is extremely useful when your code contains thousands of number of lines.
    •     Use CTRL+D to delete the entire line.
    •     Use CTRL+SHIFT+R, to open the file from package explorer quickly. Would be better if you use ‘*’ in your search strings.
    •     Use CTRL+F6 to switch to the next editor.
    •     Use CTRL+SPACE, for the code context assistance. This is the most common and I think most of eclipse users are aware of this shortcut.
    •     Use CTRL+W to close the current window/editor.
    •     Use CTRL+SHIFT+L to get the context menu help for all the available keyword shortcuts.
    •     Use ALT+F7 to open the sub tab in the editor like Metadata and Source.
    •     Use ALT+/ to show the correct variable name (type some letters and use this key).
    •     Use CTRL+K to find the next occurrence of the selected text. You can select a text or any word and press CTRL+K to find the next occurrence of the same text in that file.

Salesforce record Id 15 digit 18 digit conversion

Visual force page
<apex:page controller="idConvertor">
    <apex:form >
        <apex:pageBlock >
        <apex:pageMessages id="showmsg"></apex:pageMessages>
            <apex:pageBlockButtons >
                <apex:commandButton value="Convert" action="{!convert}"/>
            </apex:pageBlockButtons>
            <apex:pageBlockSection >
            <apex:inputText value="{!inputId}" label="Input Id:"/>
            <apex:outPutText value="{!outputId}" label="Output Id:"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>
Apex class
public with sharing class idConvertor {
    public String inputId{get;set;}
    public String outputId{get;set;}

    public PageReference convert(){
        outputId = convertId(inputId);
        return null;
    }

    String convertId(String inputId){
        string suffix = '';
        integer flags;
        try{
            for (integer i = 0; i < 3; i++) {
                flags = 0;
                for (integer j = 0; j < 5; j++) {
                    string c = inputId.substring(i * 5 + j,i * 5 + j + 1);
                    if (c.toUpperCase().equals(c) && c >= 'A' && c <= 'Z') {
                        flags = flags + (1 << j);
                    }
                }
                if (flags <= 25) {
                    suffix += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.substring(flags,flags+1);
                }else{
                    suffix += '012345'.substring(flags - 26, flags-25);
                }
            }
        }
        catch(Exception exc){
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Please enter Valid 15 digit Id'));
        }
        String outputId = inputId+suffix;
        return outputId;
    }
}

Actionstatus visualforce disable screen

Here is a visual force page and controller for the same :)
Check it :)
You would like :)

Visual force page 
In case of a custom button , it would be nice if can idle a page until complete action for a click .

<apex:page controller="actionStatusImage" tabStyle="Account">
    <apex:outputpanel >
        <apex:actionstatus id="actStatusId">
            <apex:facet name="start">
                <div class="waitingSearchDiv" id="el_loading" style="background-color: #DCD6D6;
                       height: 100%;opacity:0.65;width:100%;">
                    <div class="waitingHolder" style="top: 74.2px; width: 91px;">
                        <img class="waitingImage" src="/img/loading.gif" title="Please Wait..." />
                        <span class="waitingDescription">Saving...</span>
                    </div>
                </div>
            </apex:facet>
        </apex:actionstatus>
    </apex:outputpanel>
    <apex:form id="formId">
    <apex:pageBlock id="pgBlckId" title="New Account">
        
        <apex:pageBlockButtons >
            <apex:commandButton action="{!save}" value="Save" reRender="pgBlckId" status="actStatusId"/>
        </apex:pageBlockButtons>
        
        <apex:pageBlockSection id="pgBlckSecId" title="Account Information" collapsible="false">
            <apex:inputField value="{!account.name}"/>

        </apex:pageBlockSection>
    </apex:pageBlock>
    </apex:form>
</apex:page>

Apex class
public class actionStatusImage {
    public Account account{get;set;}
    public actionStatusImage(){
        account = new Account();
    }
    public Pagereference save(){
        insert account;
       
        return null;
    }
}

Import a CSV file and insert Accounts from CSV

Awsome !!! Especially if we can insert set of records into our instance from an excternal csv file using visualforce page something like dataloader n all :)
Just try :)
Here is code for visualfoce page and apex class for the same :)
Try :)
Visualforce page :
<apex:page controller="importDataFromCSVController">
    <apex:form >
        <apex:pagemessages />
        <apex:pageBlock >
            <apex:pageBlockSection columns="4">
                  <apex:inputFile value="{!csvFileBody}"  filename="{!csvAsString}"/>
                  <apex:commandButton value="Import Account" action="{!importCSVFile}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
        <apex:pageBlock >
           <apex:pageblocktable value="{!accList}" var="acc">
              <apex:column value="{!acc.name}" />
              <apex:column value="{!acc.AccountNumber}" />
              <apex:column value="{!acc.Type}" />
              <apex:column value="{!acc.Accountsource}" />
              <apex:column value="{!acc.Industry }" />
        </apex:pageblocktable>
     </apex:pageBlock>
   </apex:form>
</apex:page>
Apex class :
public class importDataFromCSVController {
public Blob csvFileBody{get;set;}
public string csvAsString{get;set;}
public String[] csvFileLines{get;set;}
public List<account> acclist{get;set;}
  public importDataFromCSVController(){
    csvFileLines = new String[]{};
    acclist = New List<Account>();
  }
 
  public void importCSVFile(){
       try{
           csvAsString = csvFileBody.toString();
           csvFileLines = csvAsString.split('\n');
           
           for(Integer i=1;i<csvFileLines.size();i++){
               Account accObj = new Account() ;
               string[] csvRecordData = csvFileLines[i].split(',');
               accObj.name = csvRecordData[0] ;           
               accObj.accountnumber = csvRecordData[1];
               accObj.Type = csvRecordData[2];
               accObj.AccountSource = csvRecordData[3]; 
               accObj.Industry = csvRecordData[4];                                                                           
               acclist.add(accObj); 
           }
        insert acclist;
        }
        catch (Exception e)
        {
            ApexPages.Message errorMessage = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured while importing data Please make sure input csv file is correct');
            ApexPages.addMessage(errorMessage);
        }
  }
}

Thursday 16 April 2015

Trigger on Notes and Attachments



If we need to write a trigger on ay object in salesforce , salesforce itself gives as a cool UI to create the same? Ever you tried to do the same for Notes and Attachments in salesforce ? No... Nowhere can see such a UI. Amazing ! We need to create trigger under the Notes and attachments. Then there is a solution... Read through...

Method 1 : Create trigger from Developer console.

Click New > Apex Trigger
Select SObject as "Attachment" form dropdown available.

Method 2 : Using Force.com IDE or ANT.

Sample code :
trigger SetTitleToAttachment on Attachment (after insert) {
String Title;
Id pId;
for(Attachment att: Trigger.new){
Title=att.Name;
pId=att.ParentId;
}
List<Case> c=[select Id , Title__c from Case where Id=:pId];
List<Case> caseRecordToUpdate = new List<Case>();
if(c != Null){
for(integer i=0 ; i<c.size(); i++){
c[i].Title__c=Title;
caseRecordToUpdate.add(c[i]);
}
}
if( caseRecordToUpdate.size() > 0 ){
update caseRecordToUpdate;
}
}

Need to login to other salesforce Instance from your own Instance ?


Need to login to other salesforce Instance from your own Instance ?
  
    Here is a simple solution. Read and implement

Decide service provider and Identity provider
 
Service Provider  :  Salesforce Instance (A's developer org).
Identity Provider  :  Salesforce Instance (B's developer org).

Identity provider
Step 1 : Create and register a domain in Identity provider organization,  (Domain Management --> B's Domain)
Step 2 : Enabled Identity provider. (Security Controls --> Identity Provider)
             Created a dummy certificate (self Signed) and set it as use on communication with service provider.
             Saved identity provider settings.
             Downloaded the certificate and saved in a drive.( Need to upload in service provider)
Service Provider
Step 3 : Enable single sign on in service provider (Security Controls > Single Sign-On Settings)
            Upload certificate down loaded from Identity provider.
            Put "Assertion contains the Federation ID from the User object" as "SAML Identity Type" since need to connect IP login name with Federation ID in SP user.
            Put "Identity is in the NameIdentifier element of the Subject statement" SAML Identity Location since need to connect IP login name with Federation ID in SP user.
           Save and note "Salesforce Login URL".

Identity provider

Step 4 : Define Connected App for service provider (Create > Apps > Connected Apps Section )
            Give basic information like App name contact email etc.
            Enable "Entity ID".
            ACS URL – Use the Salesforce Login URL from Service Provider
            Save and note "IdP-Initiated Login URL".
            Add which profiles should be able to access this app.
Service Provider
Step 5 :  Edit Single sign on settings and paste  "IdP-Initiated Login URL" from Step 4 to "Identity Provider Login URL".
User Set up
Step 6 : Copy one of Username from Identity Provider instance to “Federation Id” field of related user in Service Provider.

Identity provider User Interface
Step 7 : Created a custom link "Login To A's Instance" on home page in B's instance .
Working

Login to Identity provider (B). Move to "Home" tab and Click "Login To A's Instance" in narrow column.
Result
             Redirects to A's instance without separate login.

Friday 27 March 2015

Summer 14 : A Review on Reviews

  • Visualforce Remote Objects Enhancements
  • Canvas Updates
  • Visual workflow Enhancement
  • Developer Console Additions
  • Change Sets & Deployment Tools
  • New Apex Enhancements
  • Configure Push Notifications for Your Salesforce
  • Mobile SDK Connected Apps
  • Visualforce Remote Objects Enhancements
  • Remains in Developer Preview for this release

  1. Remote method overrides
  2. An upsert() operation
  3. The orderby query condition for specifying sort order
  4. Geolocation fields
  5. New query operators for where conditions
★ Remote method overrides:
Extend or replace the built-in behavior of the basic
CRUD operations.Provide new flexibility by enabling
you to add your own custom logic to the basic
operations. With your own Apex code, can extend or
customize the behavior of Remote Objects.
★ An upsert() operation
A shortcut for saving new data by updating an object or
creating an object if it doesn’t exist.
★ The orderby query condition for specifying sort
order:
Can sort on up to three fields.
orderby: [ {Phone: "DESC NULLS LAST"} ,
{FirstName: "ASC"} ]
★ Where Condition Operators
  1. ne: not equals
  2. lte: less than or equals
  3. gte: greater than or equals
Canvas Updates
Canvas - platform for integrating external apps to SF
from their native environment.

  • Canvas Apps in Page Layouts
  • Request a Signed Request on Demand
  • User Approved Signed Canvas Apps
  • SAML -Single Sign-on for Canvas Apps
  • Custom App Life Cycle
In PageLayout
Go to CanvasApp Settings section in CanvasApp created.
Add layout and MobileCards to Location.
Request a Signed Request on Demand
● Useful while refreshing an Expired Session.(Not interrupting the
   User)
● Use Javascript SDK. (use canvas-all.js in your JavaScript code).
● Use refreshSignedRequest() and rePost() method in SDK.
User Approved Signed Canvas Apps
● Canvas App accessed in 2 ways:- SignedRequest and Oauth.
● Previously, App is user-approved if OAuth used for access.
● Now App with SignedRequest can also be user-approved.
SAML -Single Sign-on for Canvas Apps
● SAML (Security Assertion Markup Language)
● Provide App users with seamless auth flow.(whether oauth or
   signed request).
Using Custom App Life Cycle
In the CanvasApp Settings add custom apex class to LifeCycleClasses.
Use CanvasLifecycleHandler interface in apex class to:
● Control request data get sent to your app.
● Alter behaviour of Canvas App based on retrieved data while app
   rendered.
Visual workflow Enhancement
Visual Workflow, built using Force.com's Cloud Flow Designer, lets you visually
string together one or more forms, business rules, and calls to backend APIs to
implement a complete business process without writing code.New features for this
release include:
● Changes to trigger ready flows
● Manipulate Multiple Salesforce Fields and Records at One Time in a Flow
(Generally Available)
● Cross-Object Field References in Flows
● Use an Object-Specific or Global Action in a Flow
● Send Email from a Flow
● Governor Limits Enforced on All Flows
★ Changes to trigger ready flows : -
A trigger-ready flow is a flow that can be launched without user interaction. Also updated the list
of elements and resources that trigger-ready flows can contain.

Manipulate Multiple Salesforce Fields and Records at One Time in a Flow (Generally
Available)
Collect the values for multiple fields for Salesforce records with a single query, and manipulate
that data with a single DML statement by using sObject variables, sObject collection variables,
and loops in a flow.
★ Cross-Object Field References in Flows
When building a flow, you can now reference fields for records that are related to the values that
are stored in an sObject variable. To do so, you must manually enter the references. You can
reference cross-object fields to use their values anywhere you can reference a flow resource or
enter a value.
★ Use an Object-Specific or Global Action in a Flow
As an alternative to Record or Fast elements, flows can now use object-specific and global
actions to create and update Salesforce records. Set the input assignments to transfer data from
the flow to the action.
★ Send Email from a Flow
You now have two options for sending email from a flow: call an existing workflow email alert or
configure the email within the flow.
★ Governor Limits Enforced on All Flows
Previously, flows could potentially consume more resources than are allowed by our governor
limits
Developer Console Additions
● Search and Edit Files with the Edit Menu
  ● Find Files By Name
    ● Speed Up Queries with the Query Plan Tool
      ● View Color-Coded Logging Expiration Data
★ Search and Edit Files with the Edit Menu

  1. Find
  2. Find Next
  3. Find/Replace
  4. Search in Files
  5. Fix Indentation
★ Find Files By Name
In addition to the type-based Open dialog, the new Open Resource dialog allows you to search for a file
by name by entering a simple string, or by using regular expressions (prefix with “re:”). Click File > Open
Resource or press SHIFT+CTRL+O.
★ Speed Up Queries with the Query Plan Tool
Use the Query Plan tool to optimize and speed up queries done over large volumes. To enable the tool,
click Help > Preferences and set Enable Query Plan to true. To use the tool, enter your query and click the
Query Plan button in the Query Editor.
★ View Color-Coded Logging Expiration Data
The Change Log Levels dialog in the Developer Console now includes a color-coded Expiration field that
displays the current logging status.
GREEN(10 or more mins)>YELLOW (Less than 10 mins)>RED(After expired)
Change Sets & Deployment Tools

  • Change Sets in the Deployment Status Page
  • Force.com Migration Tool Support for rollbackOnError
★ Change Sets in the Deployment Status Page
You can monitor the status of all deployments in one place. improved to include more
information about deployments, including errors and test failures

Force.com Migration Tool Support for rollbackOnError
The Force.com Migration Tool now accepts the rollbackOnError parameter in build.xml for
deployment targets and no longer ignores this value.Now can specify whether a complete
rollback of a deployment is performed if a failure occurs by setting this parameter to true or false.
This parameter must be set to true if you’re deploying to a production organization. If the
rollbackOnError parameter is not specified, the default is true.
New Apex Enhancements

  1. Describe Limits Removed
  2. Script Statement Limits Methods Removed
  3. Submit More Batch Jobs with Apex Flex Queue (Pilot)
  4. Monitoring and Reordering the Apex Flex Queue
  5. Submitting Jobs by Calling Database.executeBatch
  6. AsyncApexJob Status Field
  7. Run Future Methods with Higher Limits (Pilot)
★ Describe Limits Removed
You’re no longer limited to describing 100 objects or to executing 100 describe statements.
Schema.DescribeSobjectResult[] results = Schema.describeSObjects(new String[]{'Account','Contact',...});
You’re no longer bound by 100 fields or fieldSets statements in your code to describe fields and field sets
respectively.
Schema.DescribeFieldResult fieldResult = Schema.sObjectType.Account.fields.Name;
Schema.FieldSet fs1 = Schema.SObjectType.Account.fieldSets.fieldset1;
The affected methods are:
getChildRelationshipsDescribes(), getFieldsDescribes(), getFieldSetsDescribes(), getPicklistDescribes(),
getRecordTypesDescribes(), getLimitChildRelationshipsDescribes(), getLimitFieldsDescribes(),
getLimitFieldSetsDescribes(), getLimitPicklistDescribes(),getLimitRecordTypesDescribes()
★ Script Statement Limits Methods Removed
They are available and deprecated in API version 30.0 and earlier. Script statement limit is no longer
enforced.So the associated Limits methods are no longer needed. The affected methods in the Limits class
are:
getScriptStatements() , getLimitScriptStatements()
★ Submit More Batch Jobs with Apex Flex Queue (Pilot)
Can submit more batch jobs simultaneously and actively manage the order of the queued jobs.The Apex
Flex Queue pilot enables you to submit batch jobs beyond the allowed limit of five queued or active jobs.
Any jobs that are submitted for execution but aren’t processed immediately by the system are in holding
status and are placed in Apex flex queue. Up to 100 batch jobs can be in the holding status. When system
resources become available, the system picks up jobs from the Apex flex queue and moves them to the
batch job queue. The status of these moved jobs changes from Holding to Queued.
Without administrator intervention, jobs are processed first-in first-out—in the order in which they’re
submitted. Administrators can modify the order of jobs that are held in the Apex flex queue to control when
they get processed by the system.
★ Monitoring and Reordering the Apex Flex Queue
From Setup, click Jobs > Apex Flex Queue.
Can monitor the moved job in the Apex Jobs page by clicking Apex Jobs.
★ Submitting Jobs by Calling Database.executeBatch
To submit a batch job, call Database.executeBatch. The resulting outcome of Database.executeBatch
depends on whether your organization has reached the five queued or active batch job limit.
● If system resources are available for processing jobs, the batch job is queued for execution and
its status is Queued.
● If no system resources are available, the batch job is placed in the Apex flex queue and its status
is Holding.
● If the Apex flex queue has the maximum number (100) of jobs, this method returns an error and
doesn’t place the job in the queue.
★ AsyncApexJob Status Field
The AsyncApexJob object, which represents a batch job, has a new status field value of Holding. This new
status indicates that the job is placed in the Apex flex queue and is waiting to be picked up when system
resources are available.
★ Run Future Methods with Higher Limits (Pilot)
One of the following limits can be doubled or tripled for each future method : Heap size , CPU timeout ,
Number of SOQL queries ,Number of DML statements issued, Number of records that were processed as
a result of DML operations, Aprroval.process, or Database.emptyRecycleBin
Note: Running future methods with higher limits might slow down the execution of all your future methods.
Running your method with double or triple capacity. Syntax : @future(limits='2x|3xlimitName')
Example : @future(limits='2xHeap')
public static void myFutureMethod() {
}
Tip :Keep in mind that you can specify only one higher limit per future method. Decide which of the
modifiable limits you need the most for your method.
Configure Push Notifications for Your Salesforce
Mobile SDK Connected Apps
With these mobile app settings, developers of Salesforce Mobile SDK connected apps can
configure their users’ mobile devices to receive push notifications from Salesforce.
If you provide a native Mobile SDK app for your organization, you can use the new Mobile Push
Notifications feature to alert your users to important changes and events in your business. The
Mobile Push Notifications feature supports Android and iOS devices and requires additional
configuration:

With the mobile OS provider (Apple or Google)
In your Mobile SDK app
Using the new Messaging.PushNotification and Messaging.PushNotificationPayload
classes OR With the Chatter REST API, using the new push notifications resource
In addition, we’ve provided a push notification test page. In this page, you can quickly test your push notification setup before the feature goes live in your mobile app.

To reach the test page:

In Setup, go to Create > Apps.
Click the name of your connected app.
Click Send test notification next to Supported Push Platform. This link appears only if
you’ve configured your connected app to support mobile push notifications.
Note: Push notifications for connected apps are available only for custom mobile connected apps, such as Mobile SDK apps. This feature does not apply to Salesforce1 or SalesforceAapps.




* This is a content from many blogs available as specified in the links. 

Winter 15 : A Review on Reviews

Winter 15
Content :
1)User Interface
1.1)Visualforce Enhancements
1.2)Visualforce Remote Objects Generally Available
1.3)Add Data Access to Visualforce Pages w/ Remote Objects
2)App Logic
2.1)New Apex Enhancements
2.2)Submit and Monitor Jobs for Asynchronous Execution with the Queueable Interface
2.3)Automate Time-Based Processes
3)Mobile
3.1)Salesforce1 Mobile App Development
4)Tools
4.1)Critical Updates
4.2)Change Sets and Deployment Tools
5)Integration
5.1)Force.com Canvas Updates
https://developer.salesforce.com/releases/release/Winter15
September - October 2014
★ Customer/User’s Point of view :
●Ability to convert leads from Salesforce1 app (Beta)
Sales representatives can convert, qualified leads ---> contacts and create opportunities
Helps sales representatives to grow their revenue pipeline.
Available in all versions of Salesforce1.
Follow the path Setup | Build | Customize | Leads | Settings and select “Enable Conversions on
the Salesforce1 App”
●Set Up Salesforce1 with the Salesforce1 Wizard :-
Simple way to complete the necessary setup tasks for the Salesforce1 mobile app.
The wizard is ideal for you if you are new to Salesforce1.
Salesforce 1 setup
●Duplicate Management (Beta) : –
To maintain clean and accurate data in your organization.
Salesforce introduced Duplicate Alerts and Blocking with Data.com.
Control whether and when you want to allow users to create duplicate records inside Salesforce,
Customize the logic that’s used to identify duplicates, and create reports on the duplicates you do
allow users to save.
Can see duplicates on edit / new.
Can accept the warning or ignore it.
●Community Designer (Beta) :-
Community Designer allows you to create, brand, and publish a custom community site that looks
great on any mobile device!
Choose from four templates to quickly start your site, and then easily style the pages to match your
company’s branding.
●Access and Share External Files with Files Connect :-
Once you are done with set up Files Connect, you can access files from external data sources like
SharePoint, or share them via the Files tab and feed.
●Unlisted Chatter Groups : -
Now you can give your users a more private option for collaboration in Chatter.
Unlisted groups offer more privacy compared to private groups, because only members and users with
the “Manage Unlisted Groups” permission can access unlisted groups in list views, feeds, and
search results.
To enable t: Setup | Build | Customize | Chatter | Settings navigate to Groups section and select
“Enable Unlisted Groups”
●Allow Attachments via Email : -
Now you can allow your user to add attachments while post to groups using email.
To enable this feature follow the path Setup | Build | Customize | Chatter | Email Settings and
select “Allow Attachments via Email” check-box.
●Delegated Administrators Can Assign Permission Sets : –
After Winter’15 release you can specify permission sets that delegated administrators can assign to
users in specified roles and all subordinate roles.
●Supported Languages Changed and Added : –
Norwegian (no) is now a fully supported language,.
Portuguese (Portugal) (pt_PT) and Slovak (sk) are now end user languages.
●Process Changed for Enabling Multiple Currencies : –
New confirmation step.
Organizations that are growing and need to track monetary values in multiple countries should find it
easier to activate multiple currencies.
Improvement on activation process, with the goal of reducing multi-currency activation time.
Setup | Administer | Company Profile | Company Information and select check-box “Allow
Support to Activate Multiple Currencies” .
●Security Tokens Required for API Logins from Callouts : –
API version 32.0 and later.
In API version 31.0 and earlier, security tokens are not required by default.
●File Upload and Download Behavior : –
When Don’t allow HTML uploads as attachments or document records ( from File Upload and
Download Security) is enabled in your organization.
Users can’t upload .swf and .xhtml file types, in addition to .html, .htt, .mht, and .svg file types
★ Developer Point of view:-
●Improvements to Setup Search (Beta) : –
Search for even more individual items, like workflow rules, email alerts, field updates and email
templates etc. by name.
Advanced Setup Search is automatically enabled in new and existing organizations.
●Set Session Timeout and Password Policies for Individual Profiles :-
Now you can customize the session timeout and password requirements on every profile.
The settings for session duration and password policies at the profile level override the settings at the
organization level.
●Run More Future Methods and Callouts :-
50 methods .
100 callouts.
Can do more with Apex without having to be restricted by the previous limits.
●Run More Tests in Sandbox and Developer Organizations :-
Twice as many tests in large sandbox or Developer Edition organizations.
It applies to sandbox organizations in all supported editions and Developer Edition organizations.
This limit is unchanged for production organizations in all other editions.
●Deploy with Active Jobs :-
Can deploy components referenced by active Apex jobs.
With this option, you don’t have to cancel Apex jobs to be able to have a successful deployment.
Previously, deployments failed if they contained components that were referenced by Apex jobs that
were pending or in progress.
●Visual Flow Enhancement :-
A) Automate Time-Based Processes :-
For example, you can create a flow that activates a contract, waits until one day after the contract is
activated, and then emails the customer with a feedback form.
B) Store Multiple Values Together in a Flow :-
Collection variables allows you to store multiple values together of similar data type.
So that you can operate on them by using the new collection variable flow resource.
Help you conserve limits by not querying the Salesforce database for that information.
C) Submit Records for Approval from a Flow (Generally Available) :-
New Submit for Approval element
Can configure a flow to submit a record for approval without any code.
Previously, need Apex class and expose it in the Cloud Flow Designer as an Apex Plug-in or Apex
trigger.
In the ‘Summer’14 release, the Submit for Approval element was available only through a pilot
program and you could only specify the record to submit.
D) Post to Chatter from a Flow :-
With the new Post to Chatter element, you can easily configure a flow to post the feed of a record,
user, or Chatter group.
These posts can include mentions and topics.
Previously to create a post from a flow, you had to use an Apex Plug-in or create a FeedItem record.
E) Receive Email for Each Unhandled Fault :-
Previously, when multiple interviews resulted in unhandled faults whose messages were similar, the
flow creator received an email for only the first unhandled fault.
When the “Flow Creators Receive Email for Each Unhandled Fault” critical update is activated.
Flow creators receive one email for each unhandled fault that occurs.
●Visualforce Enhancement :-
A) Add Data Access to Your Visualforce Pages with Remote Objects :-
Remote Objects is generally available.
This exciting feature for adding data access to your JavaScript-based Visualforce pages is now supported for
production use.
There are two new query operators that you can use in your Remote i.e in and nin
B) Preserve sObject Field Encryption in Visualforce Expressions :-
For API version 32.0 or later, expressions that reference encrypted sObject fields return the encrypted values
instead of the decrypted (plain) values
This behavior more closely matches your expectations and reduces the risk of inadvertent exposure of
sensitive data due to programmer error.
C) Serve Static Resources from the Visualforce Domain :-
When activated, this update changes the way that your static resources, such as images, JavaScript, and CSS
files, are served from Salesforce. Prior to the Winter’15 release, some static resources, such as images and
CSS files, were loaded from the Salesforce Domain.
It’s a best practice to reference static resources by using the $Resource global variable and the URLFOR()
function instead of static strings. For example:
● <apex:includeScript value="{!$Resource.MyJavascriptFile}"/>
● <apex:image url="{!URLFOR($Resource.TestZip, 'images/Bluehills.jpg')}" width="50" height="50"/>
●Refresh Licenses Using the LMA :-
Now Salesforce ISV Partners can refresh all customer licenses directly from the License
Management App (LMA).
This makes it easier for ISV partners to ensure that licenses are up-to-date without having to contact
salesforce.com.
A license refresh updates the current license information for every installation of a managed package
across all Salesforce instances.
●View More Subscriber Information in the LMA :-
LMA displays additional information such as the status, instance, and expiration date of customer
organizations.
Partners can view all relevant license details in one place, making it easier to support customers.
●Now you can include Person Account components and attributes in managed and unmanaged
packages.
★ Salesforce1 Enhancement:-
1. Do Most Actions from the Salesforce1 Action Bar :-
Mobile users now have a one-stop place to find actions in Salesforce1.
2. View All Pending Approval Requests in One Location :-
Like we have “Items to Approve” feature on Salesforce home page.
This feature is available in the Salesforce1 mobile browser app only.
3. Share a Dashboard Snapshot in Chatter :-
Salesforce1 mobile browser app allow users to post a snapshot of a dashboard component to Chatter by
mentioning a group or a user.
When viewed from the mobile browser app, the feed shows a thumbnail preview of the component, along
with the comment.
Other users reading the feed in the mobile browser app can tap the thumbnail to open the full dashboard.
4. Drill Down from a Dashboard to a Matrix Report:-
Users can tap a dashboard component to see the report that’s delivering the data to the dashboard.
Available for matrix reports as well as tabular and summary reports.
Users can see a maximum of 2,000 records.
5. Floating Report Headers :-
When users scroll down to read a report, the header rows at the top stay visible, This is similar feature
like we have for Salesforce browser version.
6. Filter List Views:-
Salesforce1 mobile browser app users can filter existing list views to see just the records they need.
7. Attach Files to Comments on Feed Posts :-
After Winter’15 user can attach files directly to comment on feed posts using the Salesforce1 mobile
browser app, as well as the Salesforce1 downloadable apps.
Users can attach files from Salesforce or files stored on a mobile device.
8. Log Calls Faster :-
Your sales reps no longer need to fiddle with all the fields in a task record when they’re simply trying to
log a call.
The Log a Call action available on leads, contacts, and accounts now displays only key fields.
This will save your Sales reps time.
9. Events in a Weekly View:-
This is one major enhancement in Salesforce1.
Events are now available in a weekly view, allowing users to see an event list for a specific day,
including previous days instead of having to scroll through a single list of all events.
And for Salesforce1 mobile browser app users, it’s now possible to create new events directly from
the Events page.
10. Clone Contact Records :-
For all versions of Salesforce1, the Clone action is now available on contacts.
This action isn’t available for other objects like accounts, however.

1)
●Salesforce1 Mobile App Development:
flexipage:reportChart—Enables you to include a single chart from a report in your Flexible Page.
label: If you leave this property blank, the component label is taken from the label of the report
instead.
● reportName:The API name of the report
2) flexipage:richText
The Rich Text component gives you the ability to add text, simple HTML markup, and images to
your Flexible Page.
● richTextValue: the HTML or text to display
3) flexipage:visualforcePage

label, pageName, Height
Reference :-
https://developer.salesforce.com/releases/release/Winter15




* This is a content from many blogs available as specified in the links. 

Spring 15 : A Review on Reviews



Introduction
      250+ new and improved features!
      Salesforce continues to give us what we ask for with 5 pages of features implemented from user submissions on the Idea Exchange.

------------------------------ Start { 2 } -----------------------

General Enhancements
  • IE 7 & 8 are no longer supported.
  • Duplicate Alerts and Blocking allows you to control whether and when you allow users to create duplicate records inside Salesforce (does not require a Data.com license BTW).
  • Improved “Import My Accounts & Contacts” from social data sources.
  • Better HTML Editor for Rich Text fields.
  • Flexible Pages have been renamed Lightning Pages throughout the Salesforce documentation and user interface. They are still known as FlexiPages in the API, however.
  • Users can subscribe to receive report notifications to stay up-to-date on the reports and metrics that matter to them.
Force.Come Code
  • Deploy to production without running all tests with Quick Deploy. You can now deploy components to production by skipping the execution of all Apex tests for components that have been validated within the last four days.
  • New Visualforce attributes for <flow:interview>
  • Visualforce map component displays locations more precisely.
  • The URLFOR function has been optimized for use with attachments in Visualforce.
  • Submit more batch jobs with Apex Flex Queue.
  • Use asynchronous callouts to make long-running requests from a Visualforce page to an external Web service and process responses with callback methods (aka, Long-Running Callouts).
  • Setup test data for an entire test class and then access them in every test method in the test class using the new @testSetup annotation.
  • Queueable Apex can now chain a job to another job an unlimited number of times.
  • The Apex callout size limit for requests and responses has been increased to the heap size limit.
  • List Apex classes and triggers with a Tooling API endpoint.
  • If you use ConnectApi (Chatter in Apex) there are an extremely large number of enhancements to checkout.
  • There is a number of new and modified Apex classes and interfaces so see the docs for details.
  • API v33.0 has a large number of new and changed objects for you to pore over. The REST API now supports insert/update of BLOB data plus CORS support! Hurrah!!
  • The Streaming API now supports generic streaming for events that aren’t tied to Salesforce data changes.
  • The Tooling API adds SOSL support and a few new objects and new fields on existing objects.
  • For ISV there are also a number of enhancements that will make you happy and your jobs easier.
Force.com clicks
  • Publisher actions are now called “quick actions” and record actions are now called “productivity actions”.
  • You can now create or edit records owned by inactive users. This should make data migration much easier.
  • Expanded Setup search for assignment rules, custom buttons, custom links and more, but sadly, in beta.
  • Geolocation fields are GA but with some limitations so see the docs.
  • You can now retain field history for up to 10 years with some configuration.
  • The Lightning Process Builder has been released which is a workflow tool to automate everything from simply daily tasks to more processes. Definitely check out the docs for this as there are a bunch of changes since the beta. Now you can create versions of a process, call Apex, customize conditional logic, trigger multiple processes in a single transaction and more.
  • If you use Visual Workflow, you can now pause a flow, customize conditional logic, create dynamic labels, make Apex classes accessible to flows and much, much, much more.
Security
  • Monitor Your Users’ Login and Logout Activity
  • Configure a Google Authentication Provider
  • Customize SAML Just-in-Time User Provisioning with an Apex Class
  • Use Multiple Callback URLs for Connected
  • Improve Security with Session Domain Locking
  • Edit Authorize, Token, and User Info Endpoints for Facebook Auth. Provider
  • Create Named Credentials to Define Callout Endpoints and Their Authentication Settings
  • Track Login History by ID with Session Context
  • Track Data Loader Logins with Login History
  • Use Login Forensics (Pilot) to identify unusual behavior within your organization.
  • Sign SAML Single Sign-On Requests with RSA-SHA256
  • Choose the Logout Page for Social Sign-On Users
  • Provide Code Challenge and Verifier Values for OAuth 2.0 Web Server Flow
  • Control Individual API Client Access to Your Salesforce Organization
  • Provision Users in Third-Party Applications Using Connected Apps (Beta)

Analytics
  • Salesforce Wave was introduced . (reference { 6 } )
  • Salesforce Analytics for iOS released.
Salesforce 1 Mobile
  • Improved offline caching.
  • Salesforce Today now includes the following cards: Current Event, Agenda, My Tasks, My Recent Records, To Me Feed, Account News, and Dashboard.
  • In-App notifications regarding subscribed to reports.
  • Records with standard address fields now display a Google Maps image of the address.
  • You can now add attachments directly from the New Post Page.
  • View multiple record updates bundled into one post.
  • View, upload, and delete group photos and add announcements & records to Chatter Groups.
  • There are a number of new Salesforce Files filters.
  • Browse and share external Files.
  • Import Contacts from mobile device native contacts.
  • Guide sales reps through the sales cycle with Sales Path.
  • Convert qualified leads to contacts and create opportunities (Beta).
  • More…  (Reference { 8 })
Communities
  • Community Management is now a one-stop shop for setting up and managing communities. Flag files, manage & translate topics, change templates and more from one place.
  • Community Builder simplifies the community design experience (templates, colors, branding, etc), implements a page editor (with previews), allows for easy navigation and more. Check out the docs for all of the goodies.
Sales
  • Sales Path guides sales reps through the sales cycle to close deals faster. It has a slick UI.
  • Historically, Territory Management has always been a huge PITA but it’s definitely getting much better with Enterprise Territory Management. The latest features offer more options for assigning and managing relationships among accounts, territories, and opportunities, greater insight into territory characteristics through custom fields on list views and records, and additional territory information on select reports. New APIs to boot!
  • Tack all the deals in your sales pipeline with Opportunities and Collaborative Forecasting. Now with owner adjustments and product field history!
  • If you are using Salesforce for Outlook, there are a ton of new features for syncing, importing and connecting to Office 365.
Service
  • Support agents who use Case Feed now can run macros to automatically complete repetitive tasks.
  • The Assets Object has been redesigned as a Standard Object with all kinds of goodies (sharing rules, record types, field history, etc.).
  • Agents and Salesforce Knowledge managers can now see a list of cases an article is attached to.
  • When using Knowledge One, agents can send an email with an article’s contents embedded in the body of the email (Beta).
  • Salesforce no longer supports Salesforce CTI Toolkit. Long live Open CTI!
  • Create cases from questions in Chatter with Question-to-Case.
  • Social Customer Service Starter Pack connects FB and Twitter accounts to Salesforce (without a Radian6 contract) allowing you to like, tweet and post all from with the Case feed. There are even Google+ and Sina Weibo Social Customer Service pilots.

Chatter & Files
  • Chatter Dashboards Package provides insight and metrics from your Chatter posts.
  • Additional group collaboration including add records, post via email with non-unique addresses and more.
  • A new setup section for Salesforce Files and Content.
  • Sync shared Files from other users.
  • Integrate with Microsoft OneDrive for Business for file sharing.
  • Call Salesforce or third-party API from Chatter Posts with Action Links.
  • OMG! They added Emoticons to Chatter Feeds!!
  • The Chatter Message object now supports triggers.
Pilots & Betas
  • The Lightning Component framework is in beta but has a number of new components and events.  (Reference { 7} )
  • Build powerful queries for Wave using Salesforce Analytics Query Language (SAQL) for ad hoc analysis.
  • Exchange Sync which syncs your users’ contacts and events between Exchange-based email systems and Salesforce.
  • Manage Customer Data with Data Pipelines to leverage the power of custom Apache Pig scripts on Hadoop to process large-scale data that’s stored in Salesforce.

--------------------------- End { 2 } ------------------
---------------------------- Start  { 3 } --------------

Customer/User’s Point of view


1.  Add Rich Text Notes to Records (Beta) : – Now with Notes, users can add bulleted and numbered lists to notes. User have option to follow the notes and share it with “People” or “Chatter Groups”(As shown in the following screenshot).  To enable/disable this feature follow the path Setup | Build | Customize | Notes | Settings and select “Enable Notes” checkbox.

Notes New UI

2.  Add Public Groups to delegated administrator :-  Now delegated administrators can create public groups, and you can specify public groups in which delegated administrators can add and remove users in specified roles and all subordinate roles.
3. Create or Edit Records Owned by Inactive Users :- After Spring’15 release, system administrators and all users with the create or edit permission can create or edit accounts, opportunities, and custom object records that are owned by inactive users. Previously, only administrators were able to edit accounts, opportunities, and custom object records that are owned by inactive users.
4. Duplicate Management (Generally Avalaible) : – To maintain clean and accurate data in your organization, Salesforce introduced Duplicate Alerts and Blocking with Data.com. It provides a way to control whether and when you want to allow users to create duplicate records inside Salesforce, customize the logic that’s used to identify duplicates, and create reports on the duplicates you do allow users to save.
Duplicate Management
5 New Salesforce Files Setup Node for Files and Content :-  Files and Content have a new home in Setup! Now, you can manage all your Files and Content settings under a single Salesforce Files node. Previously, these settings pages were widely dispersed across Setup.
6 Emoticons Added in the Feed :- Now your users can add expressions like a smiley face to their posts and comments by typing a character combination. To enable/disable this feature follow the path Setup | Build | Customize | Chatter | Settings and select “Allow Emoticons” checkbox. Emoticons aren’t supported in Salesforce1.
Emotions in Feed
7  Add records to Chatter Groups : - Adding records to groups allows users to collaborate on and discuss the records as a team in the group.  To add records to chatter groups you have to customize the chatter group layout and add the Add Record action to the group publisher, as shown in the following screenshot
Add records to Chatter Groups
8 Feed with a New Task Action: - It allow users to create New Task action directly from a post in their feed.
New task action
9.  Subscribe to Receive Report Notifications (Generally Avalaible) : – After Spring’15 release users can now sign up for report notifications, to stay up-to-date on the metrics they care about most. To subscribe a report click on subscribe button and the conditions, action and schedule frequency. Each user can subscribe to up to five reports.
Subscribe Report
10.  Supported Languages Changed and Added : – Two languages (Croatian, Slovene) have been promoted from platform-only languages to end user languages. Salesforce have we’ve added 46 new platform-only languages.
11.  Sales Path: – Get sales reps to close deals faster by guiding them through your company’s sales process, so your reps can get their opportunities to the next stage.
12.  Report on Chatter Usage : – The Salesforce Chatter Dashboards package gives administrators an essential set of dashboards and reports to keep tabs on Chatter activity. Administrators can gain insights from the latest metrics and rapidly spot trends. The Salesforce Chatter Dashboards package will be available on AppExchange shortly after Spring ’15.
13.  Products Now Have Field History Tracking : – After Spring’15 release Products will have field history tracking. You can select certain Product fields to track and the changes made in the field will be displayed in the History related list.

Developer Point of view:

1. Indexed Column Added to Lists of Fields in Setup : – Listings of fields in Setup include a new Indexed column that indicates when a field is indexed in the database. The new column is available for standard and custom objects and indicates indexing for standard and custom fields.
Indexed Column
2. Assets Object Redesigned as a Standard Object :- The Assets object is used to tracks products that your customers own. The Assets object has been enhanced in Spring’15 release to give your users a more robust way to manage assets. Previously, the Assets object was a child object of the Accounts object. After Spring’15 release the Assets object has been redesigned as a standard object and has the same features, including a tab, sharing settings and record types, as a standard object.
Assets Tabs
3. Submit More Batch Jobs with Apex Flex Queue (Generally Available) :-  Now you can submit up to 100 batch jobs simultaneously and actively manage the order of the queued jobs to control which batch jobs are processed first. This enhancement provides you more flexibility in managing your batch jobs.
4. Make Apex Callouts with More Data :-  The callout size limit for requests and responses has been increased to the heap size limit. With a larger callout size for requests and responses, you can send and receive more data from an external Web service. Following compares the old and new limits for callout request and response sizes.
Increased Callout Size Limits
5. Set Up Test Data for an Entire Test Class :- You can reduce test execution times especially when you’re working with many records. Test setup methods enable you to create common test data easily and efficiently. By setting up records once for the class, you don’t need to re-create records for each test method. If a test class contains a test setup method, the testing framework executes the test setup method first, before any test method in the class. Records that are created in a test setup method are available to all test methods in the test class and are rolled back at the end of test class execution. @testSetup static void methodName() { }
6. Visual Flow and Process Builder Enhancement :- There are several enhancements in Visual workflow, those are followings
A) Users Pause Flow Interviews :- Now you can allow your users to pause their flows. A user might pause a flow when a call gets dropped or a customer needs to find her account number and call back. Users can resume the interview when it’s time to proceed. An interview is a running instance of a flow.
Pause Flow
B) Customize the Condition Logic in Flows :-  Same like with reports and workflow criteria, you can now customize the logic between all of the conditions for a given outcome or wait event in a flow. To customize the condition logic for a wait event or an outcome in a decision, select Advanced logic (combination of ANDs and ORs).
Condition Logic in Flows
C) Reference the ID of a Chatter Post That a Flow Created :- If you create Chatter posts in a flow, you can now use the created feed item’s ID later in that flow. For example, provide the user with a link to the new feed item. Assign Feed Item ID to a flow variable when you configure the “Post to Chatter” element.
D) Create Versions of a Process :-  Now if you want to make changes to an existing process, just clone it. You can save the clone as a new process with its own version history or as a new version of the current process. While a given process can have up to 50 versions, only one of those versions can be active.
E) Call an Apex Method from a Process :- Now you can add customized functionality to your Salesforce processes by calling an Apex method. To call an Apex method, add the Call Apex action to your process and select an Apex class with an invocable method.
F) Trigger a Process Multiple Times in a Single Transaction :- Before Spring’15 release when a record changed, the process always evaluated it with the specified criteria and executed an action group only once. This means that if another process, workflow rule, or flow changed the record, the process wouldn’t immediately evaluate the criteria again and wouldn’t apply to any changes made by other processes. Now your processes can (optionally) evaluate the same record up to five additional times if another process, workflow rule, or flow updates the record in the same transaction.
7. Visualforce Enhancement :- There are several enhancements in Visual workflow, those are followings
A) New Attributes for <flow:interview> :- Available in API version 33.0 and later, the <flow:interview> components supports a new attribute: allowShowPause. Use this attribute to customize your users’ experience when pausing flows.
B) Use Visualforce Map Components to Show Location Data More Clearly :- Visualforce mapping components make it simple to create maps that use third-party mapping services. Create Visualforce maps with a set of related mapping components. <apex:map> defines a map canvas, including map size, type, center point, and initial zoom level. <apex:mapMarker> child components define markers to place on the map, by address or geolocation (latitude and longitude). Visualforce mapping components aren’t currently available in Developer Edition organizations.
8. Streamline Managed Packages by Deleting Unused Components :- When updating a managed package, you (this feature only available for Salesforce partners) can now delete Visualforce pages, Visualforce components, and static resources. By removing components that are no longer used by the app, you reduce its complexity and help create a more streamlined user experience for your subscribers. The ability to delete these components.
9.  New Components Available for Change Sets :- After Spring’15 release the following components are now available for change sets Action Link Group Template, Matching Rule and Named Credential.
10. The Named Credential component is now available in managed and unmanaged packages. Add a named credential to a package to enable authenticated Apex callouts in the subscriber organization to specify the named credential as the callout endpoint.
----------------------- End  { 3 } -------------------
Disadvantages
       In order to get record named “ABC-A00-A00000”( tokanised into [ABC-A00-A00000] [ABC] [A] [ABCA] [00] [A] [00000] and [ABCA00A00000] ), search alphabet or name or name as a complete string, otherwise can not see  expected result.
Here's how the scenario can be reproduced: (Reference : { 5 })
1. Create a record and populate ABC-A00-A00000 in the Name field ( or any searchable field).
2.Search for A00000
3. You will see no results.
4. Search for any of the following and you will see results:
[ABC-A00-A00000] [ABC] [A] [ABCA] [00] [A] [00000] and [ABCA00A00000]
Workaround:
- Search for either the entire term such as ABCA00A00000 , ABC-A00-A00000 OR
- Search for either alphabets or Numbers such as ABC OR 00000, in order to find the desired record.

Refer https://success.salesforce.com/issues_index for more known issues.

Reference
    11. https://success.salesforce.com/issues_index (Known Issues )


* This is a content from many blogs available as specified in the links.