With the release of IceLib 4.0, there are a number of features that have been added, improved, and changed to match new IC Server changes. Each namespace in IceLib is broken out to list each of these changes, to make it easier to find places where existing IceLib integrations may need to be updated for major breaking changes, or places where integrations could be enhanced to use newly introduced features. It is worth noting that, due to underlying connection security changes, IceLib 3.0 integrations must be upgraded to use IceLib 4.0 in order to work with 4.0 IC Servers. Conversely, IceLib 4.0 integrations cannot be used with 3.0 IC Servers.

The IceLib example apps have been upgraded to use the Visual Studio 2010 development environment, along with other improvements. The IceLib assemblies have been upgraded to use the .NET Framework 3.5. The IceLib assemblies were upgraded to use .NET 3.5 instead of .NET 4.0 so that systems utilizing IceLib integrations would not be required to upgrade to .NET 4.0; however, this does not restrict the ability to do so if desired.

Jump to a section:

Documentation Improvements

Added a Welcome to IceLib page and a What's New in IceLib page. Added new Getting Started topics which include documentation on some key areas of the IceLib API, such as overview information and examples for common use cases. Added new Concepts topics which describe some fundamental concepts which are common to many different areas of the IceLib API.

Added helpful tips throughout the IceLib API documentation, including links back to getting started and concept pages. Extended the documentation of API elements to include any example application usages, with details on file, line, and method reference.

Example Applications

A new C# example application was added to demonstrate usage of the ININ.IceLib.Statistics namespace. This "Statistics Sample" contains browsing of the statistics catalog, watching valid parameter values, listening to statistic value changes, and configuration and monitoring of alerts.

The example applications were upgraded to use Visual Studio 2010. Older style Windows Forms Designer code was broken out into separate Foo.Designer.cs files to reduce clutter and follow newer Visual Studio standards.

The example applications were freshened up throughout, with code improvements, some additional comments, and general clean up of warnings and style. Some "gee whiz" elements were removed that diluted the examples.


Full support for UserConfiguration, RoleConfiguration and WorkgroupConfiguration has been added. Additionally, basic support for over 70 new configuration objects has been added. Basic support includes the ability to query and monitor a configuration object for changes. Monitoring a configuration object is done by starting a watch with a supplied QuerySettings object. Two new events can then be monitored to check for changes: ConfigurationObjectsChanged and ConfigurationObjectsRemoved. The changed event is invoked when a watched configuration object's property changes. The removed event is invoked when a watched configuration object has been deleted.

At the time of IceLib 4.0 release, a new ConfigurationObjectsAdded event is visible in the API; however, it is currently not supported. This event will become functional in a future SU.

Support to return more than 50 results for a query has been added. This depends on the number of requested properties: If less than five properties are requested, a configuration query can return an unlimited number of results; however, if five or more properties are requested, then a maximum of 300 results will be returned. Extreme caution should be taken when executing a query that will return an unlimited number of results as this can cause adverse effects on the network if there are a large number of results.

The query model has been updated to help increase usability. All of the constructors for the QuerySettings<(Of <(<'TConfigurationObject, TPropertyEnum>)>)> object have been removed in favor of individualized methods for setting the requested properties, property filters, result limit, sort order and rights filters. Additionally, since the constructors for QuerySettings have been removed, creating this object is done through the configuration's list object with a new CreateQuerySettings method.

Support for standard properties, such as date created, date last modified, notes and custom attributes have been added to many of the configuration objects.

Support for filtering configuration objects through rights has been added. Supplying a RightsQueryFilter<(Of <(<'TConfigurationObject>)>)> to the QuerySettings object will cause the applicable rights to be applied to the configuration object. For instance, by supplying a view right, only those configuration objects that the Session's UserId has view rights to will be returned.

More details can be found in the Configuration getting started section.


When creating a speed dial directory, IceLib now provides the new Directory ID. This change also includes a new event arguments signature change for the asynchronous method - the event arguments will now be an instance of a CreateDirectoryCompletedEventArgs object that will supply the new Directory ID.

Support for a new ContactCountChanged event has been added that will notify a paged directory watch when the number of contacts contained in it has changed. This event will be invoked when a contact is added to the IC Server that matches the directory filter that was supplied to the paged directory watch. Additionally, the event will also be invoked when a contact no longer matches the supplied filter due to a change in the contact, or if the contact is removed from the IC Server.


To reflect IC Server changes, the email model has been changed. Support for reply, reply all, and forward have been added.

Support for a new assistance response system using the AgentAssistanceList and SupervisorAssistanceList objects has been added to replace the old help request mechanism. This new assistance response system includes a 2-way chat between agents and their supervisors, and it allows supervisors to monitor active assistance requests by their agents. This change has made the old AgentHelpRequest and AgentHelpResponse objects obsolete.

Wrapup codes can now be set per interaction segment. This change has made the old SetWrapUpCodeId method obsolete in favor of a newer AddWrapUpAssignment method.

Support for a new secure recording pause feature has been added with the SecureRecordingPause method. This allows recordings to be paused during periods where, for instance, confidential information is being relayed.

Support for a new consult transfer feature has been added with the MakeConsultTransfer method. This allows agents to bring a consultant in on an interaction. This feature can allow the agent to speak with a consultant without the external party hearing the conversation. It can allow the agent to bring the consultant in on the interaction, bringing all three parties in on the interaction.

Support for watching Line Queues has been added.

Support for inviting a party to an existing conference interaction was added with the InviteParty method.

Support for new Interaction properties that support secure calls have been added, including LocalSecurityLevelRequested, RemoteSecurityLevelRequested, SecurityLevelActual and SecurityLevelViolation.

Support for monitoring Screen Pops has been added through a new ScreenPop object. This allows incoming screen pops to be monitored for.

Support for monitored queue alerting has been added through a new MonitoredQueueAlerting object. This provides a way for enabling and disabling alerting on a monitored queue.

The AppendNote method now prepends the note with the User ID and timestamp on a new line.


Due to IC Server changes, RecorderAccess has been removed from the list of available licenses. Additionally, because of IC Server changes, all of the "ModifyQueuList" ACLs for Lines, Stations, Users and Workgroups have been made obsolete in favor of individual coach, disconnect, join, listen, pickup, record, and transfer ACLs.

Support for new 4.0 ACLs has been made available. This includes - but is not limited to - ActivateOthersList, ChangeUserStatus and ViewIndividualStats. See UserAccessListsAttributes for a full list of available ACLs.

Support for new 4.0 user rights has been made available. This includes - but is not limited to - CanParkInteractions, CanSecureRecordingPauseInteractions and CanCreateConferenceCalls. Also, due to IC Server changes, many user rights have been made obsolete in favor of a new 4.0 right. See UserRightsAttributes for a full list of available user rights.

Support for activating a custom button action has been added using the ActivateButtonAction method.

Support for retrieving the workgroup activations for a specific user has been added using the GetActivationsForUser method.

Support for creating Voice Prompts has been added through a new VoicePrompts object.

Support for setting the values of boolean, string and string array attributes for user settings data has been added. This addition also applies to UserTrackerRightsSettings.


See the changes outlined in ININ.IceLib.Interactions with Wrapup Codes, Help Requests and Secure Recording, as they apply to a WorkItemInteraction.


The need to invoke the RegisterUser and DeregisterUser methods has been removed. These methods and all supporting classes have been marked as obsolete.

The ability to start a timed screen recording for a specified User ID and duration has been added with the StartTimedRecording method.


This namespace is new to IceLib in 4.0. This namespace contains classes for implementing reporting related features. This namespace can be used to retrieve historical information about interactions. A specific interaction can be retrieved; however, a filtered list of interactions can also be retrieved.


This namespace is new to IceLib 4.0. This namespace contains classes for receiving Interaction Center statistics. It can also be used to set and receive statistic alerts. All statistics shown in Interaction Supervisor TM can now be accessed via IceLib.

Support for querying details about statistics and parameters to those statistics has been added with the StatisticCatalog class. Watching statistic values is supported through the StatisticListener class. The value of a statistic, available as a StatisticValue, has type information, such as duration, string, or double.

Support for watching details about alerts has been added with the AlertCatalog class. The AlertCatalog also provides support for creating new alerts and editing existing alerts. The AlertListener class has been added to support watching alerts for changes in configuration or state. A state change occurs when an alert becomes triggered or is cleared. Alerts contain details about how they are configured, including the triggering statistic and the action type, such as email or memo.

A new "Statistics Sample" example application was added to demonstrate usage of this new namespace.

More details can be found in the Statistics getting started section.


See the changes outlined in ININ.IceLib.Interactions with Wrapup Codes, Help Requests and Secure Recording, as they apply to a TrackerInteraction.

Support for setting attribute values from a Boolean, a String and an array of Strings have been added.

Support for specifying an admin type filter has been added when searching for individuals using the SearchIndividuals method.