Friday, November 15, 2013

New Course on Salesforce App Development on Udacity

While browsing courses on Udacity, I noticed that it will be offering new course on Salesforce App development starting on Monday.  It is aptly named Introduction to Salesforce App Development.  The full course experience is $105/month, but you can follow the courseware for free.  It might be of interesting course for those aspiring Salesforce developers.

Thursday, September 19, 2013

Upcoming Salesforce Webinars for Oct. 2013 - Migration, Notification, Mobile, and More

The October, 2013 lineup for the Salesforce webinars has been released, the details for which you can find in the Salesforce event calendar, as per usual.  For this month, instead of focusing on a single theme, the webinars cover various topics ranging from migration, to notification, to mobile development, and to Apex development.

The first webinar for October, which will be held at 7:00am and 10:00am PDT on October 2nd, is entitled Salesforce API Series: Release Management with the Metadata API.  Based on the description and technologies mentioned, the focus of this webinar will be on continuous integration.  This is not something we had to deal with, but for those looking to automate their release of process, this would be interest to you.

On October 10th (9:30am PDT), there will be another session of CodeTalk.  This time, it will be on Apex programming, so the Apex developers out there, get your questions ready.

On October 16th (7:00am and 10:00am PDT), there will be a second webinar, entitiled Alert! Event Notification Options for Force.com Apps.  This webinar promises to go over and discuss various event notification that are available through Salesforce.  The event notification is something that many of our customers ask for, so I am interesting to see if I can pick up some new techniques in this webinar.

Finally, on October 23rd (7:00am and 10:00am PDT) there will be another webinar on mobile development.  This one is called Intro to Salesforce Mobile SDK: Building Android Apps.  Based on the title, this will be similar to the last webinar on iOS app development webinar, except it will walk through development in Android app.  If you enjoy that last webinar and interested doing Force.com app development on Android platform, this would definitely be an interest to you.

Monday, September 2, 2013

Upcoming Salesforce Webinars for Sept. 2013 - Mobile, Mobile, and More Mobile

I am just getting back from my vacation, and for my first post-vacation post, I would like to let you know about upcoming Salesforce Webinars for September 2013.

One of the resources that Salesforce avail to the developers is the webinar - online tutorial or question and answer period - they hold frequently.  These webinars are usually held over GoTo Meeting or Google Hangout, and you can register for free on their respective webpages.  You can find out about their upcoming webinars on the Salesforce event calendar, but I'll also post somewhat regularly about the upcoming webinars here as well.

The focus for September seems to be on mobile development, probably in conjunction with release of version 2 of the Salesforce Mobile SDK.  The first of the webinar is entitled Intro to the Salesforce Mobile SDK: Building iOS Apps and appears to focus on iOS application development using Mobile SDK 2.0.  This will be held on Thursday, Septebmer 5, 2013 at 7:00am PDT and 10:00am PDT.

At 11:00am PDT of  Tuesday, September 10, 2013, there will be a webinar on Rapid Mobile Application Development Using the Appery.io Mobile Pack and Salesforce.com.   I am not familiar with Appery.io, but based on name and on description, this is another framework for developing mobile web application.  I believe this webinar will actually be run by the representative from Appery.io, so we should be able to pick up a thing or two on integrating this framework with Salesforce.

Finally, there will be another CodeTalk on Mobile development at 9:30am PDT, Thursday, September 12, 2013.  CodeTalk is an online question-and-answer session on a chosen topic that Salesforce hold somewhat regularly, and the topic is usually is closely tied to a recently-held webinar.  I usually find these CodeTalks more helpful than the webinar as webinar seems to be more geared towards the beginning developer whereas these are actually answering the questions the developers have.  One thing I would advise is to get your questions ready as it can go by pretty quickly.

Saturday, July 27, 2013

#viewAllDiscoTopics

The topic of this post probably is somewhat out of date, and it is unlikely that you will be encountering this same issue in the future.  However, I do believe it does warrant a post for a number of reasons.  First, because of the ridiculousness of the name and the absurdity of the error, #viewAllDiscoTopics has become something of standing joke for all the idiosyncrasies in Salesforce at my work.  Second, it demonstrates the perils of deploying migration during the Salesforce upgrade period, as I will demonstrate.  And Third and last, it demonstrates the pitfalls of Force.com Migration Tool, something that I will likely return to it over again and again in this blog.

Having outlined what we have learn from this bug, so what is #viewAllDiscoTopics?  Earlier this year,  just about the time when Spring '13 upgrade was being rolled out, we were trying to migrate from a pre-existing dev Sandbox to a newly-created testing Sandbox org using Force.com Migration Tool.  However, when we try to deploy the retrieval into testing Sandbox, we received following, and rather cryptic, error message:
Unknown user permission: ViewAllDiscoTopics
After some Googling, I found out that this was one of the permission that was removed from Spring '13 release of Salesforce.  As both the source and the destination orgs were Sandbox, and appears to have been upgraded, you would expect that either this permission should not have been included when the package was retrieved from the source org or should have been ignored by destination org when we were deploying it.  However, as many of us who have used Force.com Migration Tool know, Force.com Migration Tool is something of all-or-nothing proposition where you have very limited control on what can be retrieved.

Given that one of the reasons Salesforce.com recommends the use of Force.com Migration Tool, one would expect that there must have been some automated process to remove this user permission from retrieved XML metadata file.  Hence, I had opened a case and posted a question on Salesforce.com forum here.  However, only answer I had received was to manually remove that tag from the XML file, as you can see from that discussion.

My Work-around
For our migration process, manually removing this tag every time we migrate just was not acceptable to us.  Hence, I had written a small Python script with xml.etree.ElementTree to automatically remove any occurrence of userPermission tag whose child name node has viewAllDiscoTopics as its inner HTML value.  I won't post the source code here as this is something that is simple to implement and could be implemented with pretty much any modern scripting language.  However, I will post how I have set up my ant script to call to automatically call this removal script after retrieval as I suspect many of us are not familiar with it as Makefile.

As a first step to automate the tag removal, I added following ant target to call my Python script:
<target name="removeTags">
  <exec executable="python">
    <arg value="removeViewAllDiscoTopics.py" />
  </exec>
</target>
After that, I modified my custom target to automate the retrieval and deployment to call this target prior to deploying the retrieval to destination org:

<target name="deployAll">
  <antcall target="retrieve" />
  <antcall target="removeTags" />
  <antcall target="deploy" />
</target>

Take-away
Now, this does address the problem automating removal of this particular bug.  However, this does not address the underlying problem that you need to be aware of presence of such bugs and you have to create scripts to remove all occurrences of such bugs, which is clear limitation of the tool.  Also, using a custom script to massage the retrieved XML is something that I had to do to address other limitations of Force.com Migration Tool, and I will revisit this solution in future posts.  Finally, this is something that occurred precisely because the deployment happen during the Salesforce upgrade window.  This is something that is mentioned in recent Force.com webinar on deploy: From Sandbox to Production: Demystifying Force.com Release Management Part 1.  The suggestion from Salesforce.com in that webinar is to avoid deployment during the upgrade window, which is not practical for many enterprises due to their business cycle and which exposes one of the major limitation of Salesforce.com.

Sunday, July 14, 2013

About this blog

As a Force.com Certified Developer with about a year of experience developing in Salesforce and over five years working in the industry as a developer, there are much to like about in doing development on Salesforce.com platform.  As a standardized platform, it does take care much of the UI design decision.  However you feel about the look-and-feel of Salesforce, this does make the lives of non-UX designers, like myself, easier.  Although I am not a huge fan of Salesforce having their custom programming languages and design of these languages, APEX, the programming language for Salesforce, and Visualforce, the mark-up language, are fairly easy to learn and they are making strong efforts to add features to these languages.  As well, you can see they are opening up more and more aspects of Salesforce, making it easier to interact with external system as well as build your custom solution on top of Salesforce platform.

However, one aspect that has been frustrated me is the lack of open forum to document the pitfalls and bugs in Salesforce platform.  The many discussion forums, both internal to Salesforce and external forums, such as StackOverflow, focuses on answering specific implementation questions.  Salesforce's Community forum does have Known Issue section; however, this only tracks some of the cases open against their support and that were deemed to be worthy to be documented publicly.  The problem with not having an open forum for such discussion is that it is difficult to identify whatever issue one is having is an isolated incidence or whether others are having similar issue and to have open discussion about work-around.

To this end, the purpose of this blog will be document the pitfalls and bugs in Salesforce platform found by this Force.com developer, so as to engage wider discussion on this issue, as well as to help others experiencing similar issue.  In addition to this, I will post about useful resources I find or upcoming Salesforce-related events that looks to be useful.  Finally, I might make some shameless plug on some of my works as well.

I hope those reading this blog find these posts useful in your Force.com Development work and encourage you to making Salesforce even better developer platform than it is.