IceLib 4.0 SU 5 includes a number of features that have been added, improved, and changed. 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.

Jump to a section:

ININ.IceLib.Configuration

Transaction support for operations that affect the configured users has been added. Transactions are initiated via a call to ConfigurationManager..::..BeginTransaction()()()() or ConfigurationManager..::..BeginTransactionAsync(EventHandler<(Of <<'(BeginTransactionCompletedEventArgs>)>>), Object). This causes user-related notifications to be suspended, until ConfigurationManager..::..EndTransaction(Int32) or ConfigurationManager..::..EndTransactionAsync(Int32, AsyncCompletedEventHandler, Object) is called. Transaction IDs can be set (or cleared using ConfigurationManager..::..NoTransactionId), by calling DefaultUserConfiguration..::..SetTransactionId(Int32), RoleConfiguration..::..SetTransactionId(Int32), UserConfiguration..::..SetTransactionId(Int32), and WorkgroupConfiguration..::..SetTransactionId(Int32). After being set (or cleared), prior to committing the objects to the IC Server's Configuration, Transaction IDs can be accessed via the DefaultUserConfiguration..::..TransactionId, RoleConfiguration..::..TransactionId, UserConfiguration..::..TransactionId, and WorkgroupConfiguration..::..TransactionId properties. Access Control Group assignments can also be included within transactions via a call to AssignToAccessControlGroup(ConfigurationManager, AccessControlGroup, IEnumerable<(Of <<'(ConfigurationId>)>>), AccessControlGroupObjectType, Int32).

The following new properties have been added to the various configuration objects: ClientTemplateConfiguration..::..IsPermanent, UserConfiguration..::..CallbackEnabledWorkgroups, WorkgroupConfiguration..::..CallbackMaxRetry, WorkgroupConfiguration..::..CallbackSnoozeDuration, WorkgroupConfiguration..::..IsCallbackEnabled, StructuredParameterConfiguration..::..Description, StructuredParameterConfiguration..::..Parameters, StationConfiguration..::..PhoneNumberClassifications, StationTemplateConfiguration..::..PhoneNumberClassifications, and ResponseManagementDocument..::..ImportedDescription.

The following properties have been marked as obsolete: UserConfiguration..::..MobileOfficeUser, WorkgroupConfiguration..::..HasActivation, WorkgroupConfiguration..::..HasMailbox, and WorkgroupConfiguration..::..RecordingBeepTones.

A new ResponseManagementDocumentConfiguration..::..SetDocument(ResponseManagementDocument) method has been added to facilitate importing documents.

The ServerParameterConfiguration and StructuredParameterConfiguration objects are now editable. StructuredParameter and StructuredParameterType objects have been added to support editing of structured parameters.

Getting validators on container configuration objects is now supported via calls to EditableContainerConfigurationObject<(Of <(<'TPropertyEnum>)>)>..::..GetValidators()()()() and GetValidatorsAsync(EventHandler<(Of <<'(GetValidatorsCompletedEventArgs<(Of <<'(TPropertyEnum>)>>)>)>>), Object).

The ability to query configuration objects by starting at a specific record number has been added. Setting the starting record number for a query can be done by setting the appropriate value on QuerySettings<(Of <(<'TConfigurationObject, TPropertyEnum>)>)>..::..SetStartAtRecordNumber(Int32). The QuerySettings<(Of <(<'TConfigurationObject, TPropertyEnum>)>)>..::..StartAtRecordNumber property has also been added.

New UserConfiguration..::..Rights..::..PreviewEmailUserQueue and WorkgroupConfiguration..::..Rights..::..PreviewEmailWorkgroupQueue filterable rights have been added.

Support for the following access rights has been added: CreateSchedulingUnitShiftRotations, CreateSchedulingUnitTimeoffRequests, DeleteSchedulingUnitShiftRotations, DeleteSchedulingUnitTimeoffRequests, ModifySchedulingUnitShiftRotations, ModifySchedulingUnitTimeoffRequests, PreviewEmailUserQueue, PreviewEmailWorkgroupQueue, ViewSchedulingUnitShiftRotations, and ViewSchedulingUnitTimeoffRequests.

Support for the following security rights has been added: CanCreateOptimizerActivityCodes, CanDeleteOptimizerActivityCodes, CanModifyOptimizerActivityCodes, CanModifyOptimizerStatusActivityTypeMapping, CanViewOptimizerActivityCodes, and CanViewOptimizerStatusActivityTypeMapping.

ININ.IceLib.Connection

A new concept page, Authentication, has been added that contains information about authenticating with IceLib, the various authentication types, and the related settings that affect authentication.

Support for single sign-on (SSO) authentication has been added to IceLib. See Authentication for more information. This support includes a new SecurityTokenServiceAuthSettings class used when connecting a Session and supporting classes AuthProviderContext, SecurityTokenServiceAuthParameters, SecurityTokenServicePresenter, and SecurityTokenServicePresenterContext.

The allowed authentication modes support was extended to return information about the configured SSO providers. Specifically, the AuthProviderDefinitions property was added to access the new AuthProviderDefinition class. Additionally, the GetAllowableAuthentications(HostSettings, String) method overload was added to allow specification of an isoLanguage in which the SSO provider's display name information should be returned.

The ICAuthSettings, AlternateWindowsAuthSettings, and ProxyAuthSettings classes were enhanced with SecureString support for their password handling.

Centralized tracing has been enabled for Citrix environments. This allows a default minimum trace level to be set via Interaction Administrator. Trace levels are able to be set on a per user basis, however, the highest effective value will be used. For example, if the trace levels for a user is set to a level below the minimum trace level then the minimum trace level set via Interaction Administrator will be used. On the contrary, if a user's trace level is set above the minimum trace level then the user's trace level will be used. Also, the trace level of one user will not affect the trace level of another user.

A new NewLocalCacheFileName(Session) method has been added that will create a temporary file in IceLib's local cache folder, suitable for use in file uploads.

A new station login persistence model has been made available, and can be used by setting the appropriate RemoteNumberSettings..::..PersistStationLogin, RemoteStationSettings..::..PersistStationLogin, or WorkstationSettings..::..PersistStationLogin values. Additionally, the Disconnect(Boolean) and DisconnectAsync(Boolean, AsyncCompletedEventHandler, Object) methods have been added to support persisting the station login while disconnecting a session connection.

Custom Notification watch support has been expanded with new ChangeWatchedNotifications(array<CustomMessageHeader>[]()[][], array<CustomMessageHeader>[]()[][]) and ChangeWatchedNotificationsAsync(array<CustomMessageHeader>[]()[][], array<CustomMessageHeader>[]()[][], EventHandler<(Of <<'(AsyncCompletedEventArgs>)>>), Object) methods. Additionally new IsWatching()()()(), IsWatching(CustomMessageHeader), and IsWatching(List<(Of <<'(CustomMessageHeader>)>>)) methods were added so that it could be easily determined if an active watch is already in place.

ININ.IceLib.Directories

ININ.IceLib.Interactions

ININ.IceLib.People

The behavior of the Icon property on StatusMessageDetails has been changed. Prior to SU 5, when accessing the Icon property for the first time, the icon was attempted to be downloaded on the calling thread. In cases where the icon was not able to be downloaded, this could result in large response times (sometimes in the vicinity of 60 to 90 seconds per failed icon download). The Interaction Client currently accesses status icons on the UI thread, so in cases where icon downloads fail, there is potential for large delays in showing the Interaction Client's UI. Additionally, if a status icon was updated in Interaction Administrator, any active StatusMessageList watches would have been informed of the icon change via the WatchedObjectsChanged event; however, the new icon would not have been downloaded until the associated Icon property was accessed again.

To help alleviate this, a couple of changes have been made. Firstly, when accessing the Icon property, IceLib will now return the cached icon, if it had been loaded in memory already. If the icon had not yet been loaded in memory, IceLib attempts to load the icon into memory from the local file cache. Failing this, IceLib loads the default icon. At this point, a download request for an updated icon is queued on a background thread, and then the Icon property returns what it currently has loaded at this point. In the meantime, when there are icon downloads queued, the background downloader begins to download requested icons, and as they succeed, it will then fire the associated WatchedObjectsChanged event. The EventArgs of this event will contain the Id as the key in the Changed dictionary, and the values will contain an entry for Icon.

Additionally, when a status icon is changed in Interaction Administrator, IceLib will download the icon in the background, and will fire the same WatchedObjectsChanged event, and will include both the Icon and the IconFileName values in the EventArg's Changed dictionary.

A new WatchedStatusMessageObjectsChanged event has been added to allow notifications to be received when StatusMessageDetails objects that are part of a watched FilteredStatusMessageList change. The StatusMessageChangedEventArgs supporting object has been added for that event.

A new UserStatus..::..IsInitialized property was added.

A new WorkgroupActivation(String, Boolean) constructor was added.

Support for the following ACL attributes has been added: OptimizerCreateShiftRotations, OptimizerCreateTimeOffRequests, OptimizerDeleteShiftRotations, OptimizerDeleteTimeOffRequests, OptimizerModifyShiftRotations, OptimizerModifyTimeOffRequests, OptimizerViewShiftRotations, OptimizerViewTimeOffRequests, PreviewEmailUserQueue, PreviewEmailWorkgroupQueue.

Support for the following ACL settings has been added: OptimizerCreateShiftRotations, OptimizerCreateTimeOffRequests, OptimizerDeleteShiftRotations, OptimizerDeleteTimeOffRequests, OptimizerModifyShiftRotations, OptimizerModifyTimeOffRequests, OptimizerViewShiftRotations, OptimizerViewTimeOffRequests, PreviewEmailUserQueue, PreviewEmailWorkgroupQueue.

Support for the following rights attributes has been added: AllowIntercomChat, CanCreateOptimizerActivityCodes, CanDeleteOptimizerActivityCodes, CanModifyOptimizerActivityCodes, CanModifyOptimizerStatusToActivityTypeMapping, CanViewOptimizerActivityCodes, CanViewOptimizerStatusToActivityTypeMapping.

Support for the following rights settings has been added: AllowIntercomChat, CanCreateOptimizerActivityCodes, CanDeleteOptimizerActivityCodes, CanModifyOptimizerActivityCodes, CanModifyOptimizerStatusToActivityTypeMapping, CanViewOptimizerActivityCodes, CanViewOptimizerStatusToActivityTypeMapping.

ININ.IceLib.QualityManagement

ININ.IceLib.Reporting

GetCurrentSiteId()()()() and GetCurrentSiteIdAsync(EventHandler<(Of <<'(GetCurrentSiteIdCompletedEventArgs>)>>), Object) methods have been added, as well as a supporting GetCurrentSiteIdCompletedEventArgs object.

New values have been added to InteractionSnapshotDirection: IntercomInbound and IntercomOutbound.

A new ININ.IceLib.Reporting.Interactions.Details namespace was added that allows more detailed InteractionSnapshot information via an Interaction object.

ININ.IceLib.Statistics

Statistic values can now come back from Stat Alert Server in an error state, and is supported by the following new items: ININ.IceLib.Statistics..::..StatisticErrorValueType, ININ.IceLib.Statistics..::..StatisticStatusMessageKeyValue, StatisticValue..::..ErrorReason and StatisticValue..::..StatisticErrorValueString.

The AlertFilterKey(AlertSet, String) constructor is now obsolete, and a new AlertFilterKey(AlertSet) constructor was added.

The AlertFilterKey..::..TargetId property is now obsolete.