Skip to end of metadata
Go to start of metadata


Lead: Steve Swinsburg
Committers: Daniel Robinson, Adrian Fish

Description: Profile2 is a complete re-design and re-development of the existing Profile tool in Sakai. It gives you more of a Facebook style interface for editing your profile. In addition you have a comprehensive set of Privacy controls to allow you to choose who can see what part(s) of your Profile.

With Profile2 you can post updates (integrated with Twitter), search for people with common interests, view their profiles, view their connections, add them as a connection, send private messages, upload and share pictures, and much more.

Profile2 can be run seamlessly alongside the existing profile in Sakai to allow you to evaluate both profile tools. If you've never used the profile tool in Sakai before, now is the time to start.

The development of Profile2 started as part of an ESRC e-Social Science award at Lancaster University in 2008.

See it in action

See the presentation from the 2010 Sakai conference in Denver: Profile2 - Social networking for Sakai 2

Profile2 releases:

The latest version in the 1.4 series (requires Sakai 2.8+) is:
1.4.6 released 23rd January 2011 (changelog)

The latest version in the 1.3 series (Sakai 2.4 onwards) is:
1.3.18 released 9th September 2011 (changelog) (Note that there was no 1.3.16 or 1.3.17 release)

Previous releases in the 1.4 series:
1.4.5 released 21st November 2011 (changelog) (release announcement) (Note that there was no official 1.4.4 release)
1.4.3 released 30th September 2011 (changelog) (release announcement)
1.4.2, released 11th August 2011 (changelog) (Note that there was no 1.4.1 release)
1.4.0, released 12th April 2011 (changelog)

Earlier releases:
1.3.15 released 11th April 2011 (changelog) (release announcement)
1.3.14 released 28th February 2011 (changelog) (release announcement)
1.3.13, released 22nd October 2010 (changelog)
1.3.12, released 25th August 2010 (changelog) (release announcement)
1.3.11, released 20th August 2010 (changelog) (release announcement)
1.3.10, released 12th August 2010 (changelog) (release announcement)
1.3.9, released 9th July 2010 (changelog) (release announcement)
1.3.8, released 24th May 2010 (changelog)
1.3.7, released 27th April 2010 (changelog)
1.3.6, released 25th March 2010 (changelog)
1.3.5, released 4th March 2010 (changelog)
1.3.4, released 6th January 2010 (changelog)
1.3.3, released 19th December 2009 (changelog)
1.3.2, released 18th December 2009 (changelog)
1.3.1, released 18th December 2009 (changelog)
1.3.0, released 18th December 2009 (changelog)
1.2.1, released 12th August 2009 (changelog)
1.2, released 17th July 2009 (changelog)
1.1, released 6th April 2009 (changelog)
1.0.1, released 6th February 2009 (changelog)
1.0, released 4th February 2009

Experimental releases:
There are no current experimental releases. To see what is coming in 1.5, checkout the nightly build server:

Want to try it out first?

Profile2 is the default Profile in Sakai 2.7 and up, but you can also try it out now on the following servers:

Both are hosted by the Sakai Foundation and are reset every 4 hours and 2.30am respectively, Eastern US time.

Version compatibility









1.3.x 1








1.4.x 2








1.5.x 3








1.6.x 4








1. 1.3.x is compatible with all versions of Sakai, is bundled in Sakai 2.7 and has demonstrated production experience with Sakai 2.6, however lacks some of the newer features and improvements. Note that as of Sakai 2.9, this version is longer actively supported. Security fixes may be applied but it is recommend that you upgrade.
2. 1.4.x and later depend on the ActivityService API, which is only present in Kernel 1.2.0, therefore the minimum version of Sakai required is Sakai 2.8.
3. 1.5.x is the version that ships with Sakai 2.9.0+
4. 1.6.x is the current development version.

How to get it

Check one of the following Installation Guides that is appropriate for your particular version of Sakai. This will walk you through getting the Profile2 source code and its dependencies, and then building it.

Building Profile2 on Sakai 2.4.x
Building Profile2 on Sakai 2.5.x
Building Profile2 on Sakai 2.6.x
Building Profile2 on Sakai trunk

Once you've built Profile2, continue on with the section below.

Upgrading from an older version?

You must make sure that you perform any necessary database conversion BEFORE you start Profile2, or you may run into problems later. Run the appropriate database conversion sql script found at:

PROFILE2-SRC/docs/database/<your db vendor>/

Also double check that you have removed the older version from Tomcat. Generally you only need to check TOMCAT/shared/lib to make sure that there are no suplicates of the profile2-api jars. Only the latest one should be in there. The other artifacts that are deployed to 'components' and 'webapps' should be updated automatically and no duplicates should exist.

Startup/Database Setup

Startup Sakai with auto.ddl=true in your Sakai properties as various new tables need to be created. If you cannot startup with this setting enabled, you will need to manually run the DB scripts located at:

PROFILE2-SRC/docs/database/<your db vendor>/

If you are creating the database tables for the first time, you want the appropriate profile2-ddl-....sql* (not the upgrades) for your version of Profile2.

Setting up Profile2 on MySQL?

Even if you are using auto.ddl=true for your database creation you should run the index-only sql scripts to generate the indexes on the various tables that Profile2 creates. Hibernate doesn't respect the index settings in the configuration files for MySQL, so the indexes aren't created. The index scripts are in the same directory as the creation/upgrade scripts above.

Once you've started up Sakai you'll be able to add the new Profile2 tool to My Workspace sites.

IMPORTANT See below for the you can use to configure Profile2 on a global level as well as the additional JAVA_OPTS you might need if you are behind a firewall/proxy.


Profile2 uses the following

Twitter integration

Profile2 has a built-in Twitter integration for status updates. This is configurable by each user in their Preferences page of their Profile (not to be confused with the main Account Preferences). Once a user has linked their Twitter account, status updates will then update Twitter. Administrators can control this globally by adjusting the profile2.integration.twitter.enabled sakai property.


If you are behind a proxy or web cache, you will need to add these settings to your JAVA_OPTS to allow Profile2 to send status updates to Twitter:

NOTE: http.proxyUser and http.proxyPassword are only required if you need to authenticate to your proxy.

Changing the Twitter source (optional)

By default, Twitter updates will appear to come from Profile2 (as Profile2 is a registered Twitter application).
If you want updates to come from a different 'source', you need to register an application with Twitter and provide the settings to Profile2. Fill out this form:

Be sure to choose 'client' as the Application type, NOT 'browser'. When user's link their account they will be prompted to enter a code into Profile2, that will then be verified and their own access token and secret stored in the database.

Once you have filled out the form, add the key and secret supplied to your application in the following

DO NOT reset these keys without updating the properties in Sakai, as the integration will no longer function if they are out of sync (they are essentially your application's username and password).

Give Profile2 an icon in the tool list

Add this to SAKAI-SRC/reference/library/src/webapp/skin/YOURSKIN/portal.css

EntityBroker support

See this page for information about the Entities exposed/supported by Profile2.


See this page for a list of institutions using or trialling Profile2

Found a bug? Want something added? Things don't look right?

Check the Common issues with Profile2 page.

If that doesn't help, then please submit all bugs and feature requests as Jira tickets at:

If the issue is cosmetic, please make sure to include what environment (operating system and browser + version) you experienced the issue on.

Internationalisation (i18n)

Profile2 currently supports the following languages:

  • English (British and Australian) - default
  • English (en_US)
  • Catalan (ca)
  • Spanish (es)
  • Dutch (nl)
  • Portuguese (pt_PT)
  • Russian (ru)
  • Indonesian (in_ID)
  • Japanese (ja)

If you would like Profile2 to appear in your language, feel free to translate the following three property files and send them along:

In addition, the email templates can be internationalised:

Please append the country code/variant to the filename: (eg template-connectionRequest_en_GB.xml)

Current status

type key summary status

JIRA project doesn't exist or you don't have permission to view it.

View these issues in JIRA

Showing the first 100 issues - view full list.


  1. Profile 2 works for us on Sakai 2.5.4

    One usability/UI comment is to consider this article: There is no asymmetric follow, and yet I think academia is ideal for that. Students far outnumber instructors, and should be able to follow their instructor's status without forcing the instructor to be overwhelmed with connection requests.

    I guess I want more of a sakai-specific twitter client.

    1. Hi James,

      Sorry only just noticed this. This is a great idea, I'll Jira it. At the moment you can only see people's status by viewing your connections list or searching, and they need to approve you and or have their privacy set so that connections or everyone can see them. I'll condense this down into a Feeds section. And add the ability to follow someone.

      1. Jira'd as:
        Ability to Follow someone:
        Add Feeds panel:

        Thanks again James, great ideas!

  2. After following the installation steps for Sakai 2.5.4 (from SVN branch) I get the error "org.hibernate.HibernateException: Errors in the named queries: findSakaiPersonByInterest" - any ideas?

    1. Hi Stephen,

      Yes I know what causes this.
      1. Did you install and deploy the 'Common' project?
      2. Did you first remove the old common project from Tomcat/shared/lib? If you have Sakai deployed before and you didn't do this, then this is the issue.
      The classloader is loading the first one it comes across, which is the old one. Remove Tomcat/shared/lib/sakai-common-* that are from the old build. Or just remove them all and reploy Profile2.

      That should do the trick. I'll update the install guide.

      1. Now I get a Sakai error (i.e. send a bug report + stack-trace) on /portal. I erased tomcat/shared/lib/sakai-common-* and redeployed all the projects in Profile2.

        1. Whats the error?
          There should have been only 4 that you need to remove:

          where OLD is the old version.

          Verify that the deployment of the updated SakaiPerson put these back, then restart Tomcat.

          Also, can you email me at and we'll work through it.

  3. Steve,
    This is amazing!
    It installed right off - no issues, I could post to twitter, upload a profile pic ... its great.
    thank you - people here are going to love this !

    • Jon
  4. Profile2 works great - but the pics in the roster app aren't being updated.  It still has the "No Picture is Available" box instead of my newly uploaded pic.  Any ideas as to what to do?

    1. I'm an idiot - I redeployed roster app and forgot to change over the profile bean to profile2.  Silly me (wink)

  5. Hmm - perhaps I'm not as much of an idiot as I though.  I can't find Profile2's ProfileManager implementation.  Which bean should I swap out?

    1. Hi Stephen,

      The integration between Profile2 and the other tools (ie Roster) is still in the works. As it stands, the Roster is still looking at Profile1's data.

      1. Ok the Roster integration is now complete. ie Roster uses's Profile2's data and privacy settings. Its in trunk - Profile2 deploys an updated ProfileManager API so Roster still looks at the old implementation but gets the Profile2 data back.

  6. Hi Steve,

     Is the roster integration just in trunk or also in one of the tags? Are there any update scripts for going from 1.01 to a version that has integration with the roster?



    1. Hi Maarten,

      The roster integration is in trunk, but I am about to release a 1.3 version which will have it in.
      For upgrade scripts, yes there are DB upgrade scripts in the docs directory which should sort you out moving forward.

      Don't hesitate to contact me if you have any queries.


  7. Hi Steve,

    As I am using Profile2 in Sakai 2.5.3 I created a patch for making the build files work with sakai 2.5.3. Download it here.

    I'm having trouble using the Roster integration. I'm guessing it is because the changes made to the legacy profile tool are not available for 2.5.x. Do you have any advise on how to port it to 2.5.3? And if I do that, will the roster then show the picture that I use in profile2?


  8. Hi Maarten,
    The 1.3 series of Profile2 includes the Roster integration:

    But you will also need to back port the minor changes to the profile tool that allow this to happen, this is available here:

    There is then a property to enable this (see the list of properties above, relevant one reproduced below:

    As for the POMs, I removed the pre-K1 and K1 build profiles for the 1.3 version since it was a bit problematic (ie you can't build a submodule by itself using these build profiles). Thanks for the patch, I'll add it to the 2.5.x build page.


  9. On Twitter integration, a possible idea: allow one to configure it to filter on hashtags.

    It just strikes me that a lot of stuff I post on twitter have little/no connection to my academic life, so it'd be nice to have an alternative to having to create and manage separate account.

    1. Any comments on this? I'm starting a Sakai pilot in a couple of weeks where we're using P2, and I'd like (at least at some point) to look into integrating Twitter into the class. I can't see a way to do that without some way to filter messages.

      1. Hi Bruce,

        There is a 'wall' in the works which we could build to filter on hashtags. Would that work for you?

        1. Yes, that sounds like it'd do the trick.

  10. In the JIRA for worksite creation ( SAK-27055 - Allow user to create a worksite containing a selection of users from their connections Closed ), there's mention of making the feature an option via property setting. Is there a setting for this? (can't find it anywhere). Thanks--


    1. Hi Jim,

      From looking through the code, it looks like users only need site.add permission (in their my workspace) for this to be enabled. I updated the Jira.



  11. Hi Steve,

    Another settings question–we have a school that is concerned about the potential for cheating via messaging between connections. It seems like one approach might be using the "profile2.invisible.users" setting so certain users can't be searched (and therefore connected), but on a large scale this probably isn't feasible. What we're really looking for is a way to disable the messaging capability globally. Is there any way to accomplish that?   


    1. Hi Jim,

      This isn't currently implemented but is only a few lines of code since this pattern is used elsewhere (ie disabling the gallery globally). Can you raise a Jira - it should only take a few minutes to implement. Thanks,S.

  12. Thanks Steve! Here's the Jira: SAK-27157 - Add capability to disable messaging globally Resolved