Thursday, December 8, 2011

Instant Profile Manager


Have you ever wished that it was easier to switch between accounts in Microsoft Communicator?

Having to do this every time you switch accounts is less than ideal...
Here at Instant Technologies, we've been doing a lot of work of late around Microsoft Lync 2010.  One minor, but irritating issue that we have faced is that there isn't really a good way to switch between accounts on the vanilla Lync Communicator client.  For the typical Lync user, that's probably not a big concern, but in our development environment, it becomes irksome rather quickly, particularly since it is not possible to run multiple instances of the client at the same time.  Some sort of tool to automate logins, and preserve more than a single set of credentials would be very helpful for in-house testing and development purposes.

We decided to spend a couple days ginning something up that we could use internally, and add another Microsoft API to our toolbox in the process.  It's proven fairly useful for testing and development here, and so we have decided to release it to the community.

Instant Profile Manager in action
Features:

  • Stores log in credentials for an arbitrary number of Lync accounts.
  • Passwords can be stored, or, if you prefer, you can be prompted each log in.
  • Option to manually set the fully-qualified domain name of the server pool, so that you can easily switch between users on different pools.
  • Log in to a Lync account with just a couple clicks.
Here is a video demonstration of Instant Profile Manager in action. link

Setting up a profile in Instant Profile Manager
Requirements:

  • Microsoft .Net Framework 3.5
  • Microsoft Lync 2010 Communicator Client

Download Link: Instant Profile Manager (ZIP)

If you're interested in how we did it, read on...

Technical: 
As it turns out, it is relatively simple to automate logins to the Lync Client, using the Microsoft Lync 2010 SDK (SDKDocs).  The heavy lifting is mostly handled by the LyncClient class, which exposes functions to sign in and out, and (although we haven't explored it yet) it would appear contact management and messaging are available as well.

We save the profile list as XML, to the current user's My Documents folder.  It'a a dead-simple implementation, using the .Net XmlSerializer to handle transforming our list of Profile objects into XML for us.

Since the Communicator client sets a registry key (HK_CurrentUser/Software/IM Providers/Communicator/UpAndRunning), it is a simple matter to check, and then launch the client if it is not running.  One caveat, for users with 64-bit systems, or who have installed Lync to a non-default location: You will need to edit ProfileManager.exe.config and set "PathToClient" to point at the location your communicator client is installed to.

We made an effort to also support OCS 2007 R2, as we also have a number of products that we regularly test targeting that platform, but by all indications, the Microsoft Office Communicator 2007 SDK doesn't work, or at least not with the 3.5.6907 version we are using.  Specifically, the IMessenger.Signin method doesn't seem to do any more than pop the client window up, regardless of the values passed as parameters.  Perhaps this once worked, as there are a number of examples citing it (see Programming for Unified Communications, Chapter 3), but it is now marked deprecated, suggesting that IMessenger.AutoSignin() be used instead, which is wholly unsatisfactory for our purposes.  While there appear to be some hacks one can do to make a Lync Client connect to an OCS 2007 R2 server, we didn't have much luck, and so had to abandon the idea of supporting 2007.

Thursday, October 6, 2011

Queue Manager - New Charting Options

In response to several customer requests, we are extending the measurements and reporting area of Queue Manager to support some additional charting options.  One new option will be the ability to chart information based on a selectable date range. 

For example, all queue traffic between the dates of October 1, 2011 and October 6, 2011.


Will produce the following chart - which may also be exported to Excel:




In addition to these new charts, the next update for the charting system will provide:
  1. Dual axis charting (so you can chart 2 data sets - for example queue traffic v. % connected)
  2. Ability to display all questions submitted before entering a queue (it would be cool to display trending topics)
  3. Date selectable charts
  4. New views to show connected/unconnected requests as well as resolved/unresolved requests
  5. Charts to display cumulative chat time for experts as well as queues

Friday, September 9, 2011

Thank You SaskEnergy for a Great IMtegrity Case Study

We'd like to send a special 'Thank You' to SaskEnergy for their help with our recent IMtegrity case study - focused on Sametime chat logging as well as Sametime charting and reporting. 

As a company, we know that IMtegrity is an excellent application and is a great fit for customers looking to log and archive Sametime chat conversations.  However, it's even more important when a customer uses their own words to express their experience with the product and their requirements. 

So, thank you SaskEnergy for an excellent case study on Instant IMtegrity and your selection of IMtegrity as your Sametime chat archiving application.  SaskEnergy is also an early adopter of Instant's Charting and Reporting suite for Sametime.

It was a pleasure working the entire team at SaskEnergy and we appreciate their support and encouragement.

Thursday, September 8, 2011

Queue Manager Charting Updates

Based on some recent customer deployments, we have added some features to our charting plaform and provided several new charts, and one new chart type, to our charting module for Queue Manager.  In summary, we have added the ability to:
  1. Capture and log usage metrics for both queues and experts
  2. New charts to view usage metrics for queues and experts
  3. A New chart type to layer 2 datasets in one chart
  4. Several new charts to display comparisons of various metrics within one chart

Since many of our customers deploy Queue Manager within a help desk environment, one customer requested mertics to determine  how long help desk experts spend in actual chat conversations with customers.  We have therefore added several new charts that will provide metrics on chat duration, and usage, for both experts and queues.

Here is a sample chart that demonstrates the chat duration for a collection of experts.  These new drill down enabled charts should provide a more detailed set of metrics on how long experts spend in actual chat conversations.



In addition to metrics on usage, we are providing the ability to compare 2 metrics within on a single chart.  For instance, display the total number of conversations for a queue as well as the percentage of inbound requests that were successfully answered (Total Requests v. % Answered).  We have added a new base chart type that will allow us to layer 2 data sets within one chart.

Here is an example of a chart that displays 2 sets of metrics


Queue Manager continues to gain great traction within environments that need a click to chat solution leveraging Lotus Sametime.  With these new metrics, and chart extensions, we continue to expand our help desk platform for Lotus Sametime environments.

Friday, September 2, 2011

Social Communities and Collisions of Culture



Like the phrase Web 2.0, the term Social is a loaded term with some room for interpretation.   In a world where everyone is tethered with an IP address at all times, it becomes relatively easy to communicate with anyone, anywhere, at any time.

In the old days, like the early 1990s (well, pre 1990), email was pretty standard, but it was typically transmitted over modems that connected to various service providers and then blasted out, and took in, the mail packages for that period.  In this semi-connected world, email made sense – and so did a plain old telephone call.  This is probably what we refer to as the early Internet era.

In the next transition, most companies became constantly tethered to a service provider and simultaneously deployed internal networks throughout their organization.  Here, the organization had a pretty stable collection of IP addresses, employees had internally assigned IP addresses, and folks could easily connect within, and across, organizations.  This may broadly defined the Internet boom and bubble of the late 90s – extending through web 2.0.

In this new phase, everyone is tethered with an IP address at all times.  Typically, most people have more than one IP address – one for work, one for a work phone, one for a personal phone, and one for their home.  My 8th grader has a phone that essentially provides him with an IP address at all times.  At most times during the day, most folks probably have at least two, or possibly three totally different IP addresses that they can use to communicate.  This tethering, and multi-tethering of IP addresses providing an inherently personal experience is what I consider social.

So, Social may be thought of a ubiquitous access to either one, or two, IP connections.  This connection, or collection of connections, provides access to both a personal community and a professional community – active and available at all times.  Applications are then pushed to various end-points (mobile, desktop, tablet, etc) to bridge these various social and personal communities.  Currently, this explosion seems have focused on connecting (or reconnecting) fundamentally personal relationships and personal communities (i.e. friends from high school, colleagues from previous companies, classmates).

It is interesting to imagine what happens when we experience a collision of these various communities and networks – read differently, a collision of cultures.  What takes place when the personal community collides with the corporate community – both operating in real-time?  Does one fracture or absorb the other?  What happens when the communities within a corporation are extended, or possible relocated, and placed into a personal or social space?  How are new channels created in the corporate community to absorb, mine, and manage the personal networks that are developing in the social landscape?  In this ‘post social’ space, these networks of networks collide, transform, are managed, created, and potentially shift from corporate, to social, and back again.

Wednesday, August 31, 2011

Lotus Notes as a Platform

Recently, we have been exploring different software platforms as possible alternatives for our future development efforts.  As with all platform choices, it's not an easy decision.   However, as I have been thinking about this, I've had some soul searching around using Lotus Notes as a platform - which for all practical purposes, we have been using for many years.

These possible platform choices kinda look like this:
Spring + SQL variant
Spring with Groovy and Grails + SQL variant
Ruby and Rails
Node.js (maybe with CouchDB)
Microsoft .net + SQL Server and IIS

While I can debate the merits of all of these platforms, the one 'platform' that we are cautiously re-evaluating for future development is Lotus Notes.  That is a bit strange, since Lotus Notes is inherently a platform - and a pretty awesome platform at that.  Notes includes some great stuff - most of which is just starting to show up in other environments/platforms.

Let me count the things that I like about Notes (as a platform):

  1. Fully functional and robust multi level security model - server, database, document, field level
  2. A 'no sql' database without the pain of relational data models
  3. A replicating database - that is  really fast - even over slow connections
  4. Internal directory management and hooks to all popular directories
  5. Rich development environment including support for Java, xml, JS, Lotuscript, etc..
  6. Nice deployment model (using templates and replication)
  7. Server based management tools and very rich admin tools
  8. HTTP stack - although the servlet container and other tools are dated
  9. Ability to easily update development, testing, production environments by simply updating database templates and replicating databases
  10. Stability and scalability

Here are many of the standard issues/platform consider impediments that we experience with Notes - most of which will familiar to folks in the Notes field.

  1. We will only be able to sell into existing Lotus Notes shops
  2. No good cloud based runtime model/hosting scenario - or good runtime model that works in 'non Notes' shops
  3. Licensing is confusing and expensive
  4. Young employees/prospective employees don't understand the platform or have any skills
  5. I don't think IBM considers Lotus Notes as a viable platform and they (IBM) would like to see folks move to their industrial strength platform - Wepsphere

So, as we consider future platforms, and hear young developers espouse the virtues or Ruby/Rails, Spring, 'no sql' databases that just deal with name/value pairs, etc, I'm always brought back to the idea that many of these platforms are repurposes functionality that has been available in the Notes community for many years.

So, we will take the relatively safe approach and stick with Java, Spring, Groovy, JQuery, maybe some Grails, and then mount a standard SQL db under the covers.  We will run under Apach/Tomcat and use standard libraries such as Log4J, Velocity, etc..

Peyton




Tuesday, July 26, 2011

Configuring Linux for the Notes API

Recently, while installing/running some test Java applications, we came across the following error:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: lsxbe (Not found in java.library.path)
This was on a box running SUSE Linux Enterprise Server 11 SP1, with Lotus Notes installed as well as the Java 1.6 Runtime Environment.

Running 'echo $PATH' showed that while the Java Runtime Environment was in our system/environment path, none of the Notes directories were. To do this we needed to add to the default path that SUSE provides each user. This is controlled in a few places, but, the safest place to make adjustments is inside the .bash_profile file (located in the users home folder, create this file if it doesn't already exist).

Here's how it looked after we created and added to it:
PATH=$PATH:/opt/ibm/lotus/notes
PATH=$PATH:/opt/ibm/lotus/notes/jvm/lib/ext
export PATH
After restarting our shell and running 'echo $PATH' we can see the new additions to our users path. Running the application gave us the same error as above, so we hadn't fixed it yet. After investigating more into Lotus Notes, we found some more things that needed to be added to our path.

Here's .bash_profile with our new changes:
PATH=$PATH:/opt/ibm/lotus/notes
PATH=$PATH:/opt/ibm/lotus/notes/jvm/lib/ext
PATH=$PATH:$NOTES_HOME
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ibm/lotus/notes
export LD_LIBRARY_PATH

After restarting our shell, the test application ran fine, and the exception above was gone. This was all done as the root user, to push this file to other users profiles, use this command from your home folder:
cp ~/.bash_profile /home/{username of the user}
Just replace after /home/ with the user name of the user to push the changes to.

Tuesday, March 1, 2011

Automatically Create Active Directory Accounts for Microsoft OCS

In order to load test one of our Microsoft OCS applications, we needed to quickly create hundreds of test accounts for one of our OCS servers.  First, we created the accounts in AD, then we simply highlighted the new accounts and provisioned the accounts for our OCS server.

Here is a small vbs script to create the sample users:

Set oRoot = GetObject(LDAP://rootDSE)

Set oDomain = GetObject("LDAP://" & oRoot.Get("defaultNamingContext"))
Set oOU=oDomain.Create("organizationalUnit", "ou=OCS Test Users")
oOU.Put "Description", "OCS Test Users"
oOU.SetInfo

For i = 1 to 200


       Set oUser = oOU.Create("User", "cn=OCSTest User" & i)
       oUser.Put "sAMAccountName", "OCSTestUser" & i
       oUser.Put "Description", "OCS Test User" & i
       oUser.SetInfo
       oUser.SetPassword "password"
       oUser.AccountDisabled = False
       oUser.SetInfo


Next

Wscript.Echo "Success, Check Active Directory Users and Computers - Remember F5"

Here is a screen shot of the test users:














After selecting all of the users in the explorer, we used the action to automatically provision the users for OCS - and selected the 'use SAM account' option

Friday, February 18, 2011

Sametime Chat Logging - Customer Feedback on IMtegrity - Excellent

At Instant Technologies, we have many award winning Sametime products.  However, it's wonderful to speak with customers running our Sametime chat logging application, Instant IMtegrity, and hear the great feedback and real world usage scenarios.  This week, in a great conversation with a recent customer, I learned that IMtegrity is being used in a an environment where the application is logging more than 1,000,000 Sametime IM conversations per month.   We have plenty of deployments that handle 10,000 conversations a day, but hear the words 'more than one million' indicated a huge leap. 

In addition to the pure volume of the Sametime IM conversations moving through the system, the nicest feedback involved the compliments related to the installation and support.  In the words of our customer, the installation took 'less than 30 minutes' and didn't involve any 'additional services, complex configurations, or technical support'. 

In the words of our customer, 'IMtegrity is rock solid, highly scalable, and does exactly what it needs to do'. 

One million conversations per month, zero outages, and a very happy customer. 

This has been a great week at Instant

Monday, February 14, 2011

Instant IMtegrity 4.13 Released

In response to a customer issue, Instant has released a point upgrade of IMtegrity, our Lotus Sametime chat logging and compliance application.  Instant IMtegrity version 4.13 addresses an issue encountered importing image files. 

The point release is available to existing Instant Imtegrity customers who are current on support and maintenance.  Information is available on the IMtegrity product page:

What's new in Instant IMtegrity 4.13:


Fixed error "Subscript out of range (#9)" when importing chat log files containing images.

Fixed another instance of error "Font size must be between 1 and 250, or STYLE_NO_CHANGE

(#4364)" when importing files with HTML formatting.

What's new in Instant IMtegrity 4.12:

Fixed error "Object variable not set (#91)" when merging transferred files starting with an

!exclamation mark in their file name.

Fixed error "Font size must be between 1 and 250