What's New
Version 3.4.0
- API Toolkits:
-
IMPORTANT CHANGE: Subcase ID Number generation is now handled by a new stored procedure (fc_next_subcase_seq). This stored procedure needs to be compiled to your database.
The Create Subcase API will not operate properly without this stored procedure being loaded into the database.
See the Install Required Stored Procedures section
of the Installation instructions for more information.
- Fixed a bug which would result in a "badly formed where clause" message received while evaluating an Auto Destination rule with a condition in queue path.
- License Installer:
- Added Dovetail Task Manager as a new product.
Upgrading from previous versions
Version 3.3.8
- DataVerifier:
- Added a test for CLOB/LONG columns inconsistency in Oracle database.
- Core:
- Added configuration item fchoice.setstringparameterdbtypeandsize to allow control whether the type and size of SQL parameter should be set by SDK or database driver.
- Fixed a bug resulting with type and size of SQL parameter not being set for Oracle database.
- Added a test and a warning for CLOB/LONG columns inconsistency in Oracle database.
Version 3.3.7
- API Toolkits:
- For CloseCase, when closing a case, if there are open Administraion type subcases, the Close Case API now sets the case's condition to 68 with a condition title of "Closed-Admin Pending".
- For ReopenCase, if the case has a status of "Closed-Admin Pending", then it now gets reopened. It was failing with a "Case is not Closed." message.
- For LogCaseEmailIn and LogSubcaseEmailIn, the email subject is now added to the email log record.
- Installer:
- Updated the required Microsoft .NET Framework to version 4.0 (Full). If this version has not been installed, the installer will stop.
Version 3.3.6
- DataVerifier:
- Added a new State/Prov test to make sure no entries have a blank/null name or full name.
- Added a new Strings test to make sure no duplicate entries exist for each locale.
- API Toolkits:
- Fixed the activity time for UpdatePartRequestDetail to use the session current time.
- For Site Parts - the site part objid is now returned in the toolkit result for the Move, Deinstall, and Reinstall APIs.
- Added UseDatabaseLogins property to InterfacesToolkit. When set to False, a database user is not created by the CreateEmployee API.
- Web Services:
- The Web Services have been moved to to a public GitHub repository: dovetail-sdk-web-services. The
documentation provided here is still applicable, but Web Services are not included as part of the fcSDK
installation.
- Demos:
- The Demos have been moved to to a public GitHub repository: dovetail-sdk-demos. The documentation provided
here is still applicable, but Demos are not included as part of the fcSDK installation.
Version 3.3.5
- Core:
- Improved performance for AppendFilterInList queries against non-unicode string fields, allowing the database to optimize the query.
- Fixed bug where the field size for web user login_name was based on the user login_name size when used as a parameter for contact login.
- API Toolkits:
- Added remove child entity APIs for Contracts.
- RemoveSiteFromContract
- RemoveSitePartFromContract
- RemoveContactFromContract
- Adding an attachment will now update the parent objects timestamp when possible.
- Fixed validation used when calculating a Contract's available units.
- CreateAccount now correctly handles an empty or null Territory argument.
- Fixed an issue where the timestamps written to the case_history field could be incorrect if the user's session timezone was different than the server time zone. This affected Forward, Reject, and Change Status activities. Note that the act_entry timestamps were written correctly.
- Fixed a bug causing incorrect level_to_bin and level_to_part values stored for nested BOM parts being reinstalled.
- Check Logistics and Quality transition operations now throw an exception when table_transition.rank value is higher than the table_privclass.trans_mask length.
- Added missing information about the recipients to case history for Email In action.
- Added missing information about the action type and the recipients to case history for Email Out action.
- Added missing information about the user performing an action to case history.
- Fixed a bug about setting incorrect value on time bomb flag for Action Item Change Status action.
Version 3.3.4
- Core:
- Fixed bugs in CreateAttachmentRecord to properly use metadata from WorkflowObjectInfo. It is now possible to use worflow objects which have been aliased.
- API Toolkits:
- Wrap password in quotes when setting/changing a user's password on Oracle databases.
- Fixed a bug causing nested BOM parts being installed at a wrong site-part-to-site-part level.
- Fixed bugs with CaseTimeAndExpenses object properties being ignored or improperly handled.
Version 3.3.3
- Core:
- Added SqlHelper configuration setting fchoice.sqlcommandtimeout which controls how long a SQL query is allowed to run. The .Net default (30 seconds) is used unless this specified.
- API Toolkits:
- Wrap password in quotes when setting/changing a user's password on Oracle databases.
Version 3.3.2
- Core:
- Fixed problem with incorrect activity entry additional information for 'Add Appointment' operation for an employee.
- Fixed ClarifyGeneric bug where multiple traversals against the same MTO relation would select the relation foreign-key field multiple times. This was mostly harmless on SQL Server but caused an exception on Oracle.
- API Toolkits:
- Create Case: Add support for multi-level case types in Amdocs 13.
- Update Case and Subcase Commitment APIs:
- Commitment due date will now only be updated when the given commitment date does not match what is already in the database.
- Time bombs for sending email notifications are now correctly created when changing the Commitment due date or the warning interval.
Version 3.3.1
- Core:
- Fixed problem populating the SchemaCache on SQL Server systems where ADP tables have indexes.
Version 3.3.0
Version 3.2.9
- API Toolkits:
- Added new .Net APIs to allow objids to be used for contact identification.
- The .Net UpdateContactByObjidSetup has a contactObjid property that can be set for use in the new UpdateContactByObjid API.
Version 3.2.8
- API Toolkits:
- FCCL - Updated Fulfill APIs to improve performance when updating part request information.
- FCCL - Ship API now returns database identifier of the ship_parts record it creates.
Version 3.2.7
- Core:
- LocaleCache: Improved handling of daylight savings periods to support periods which span multiple years. For example, in New Zealand, daylight savings starts in September and ends in April.
- BREAKING API CHANGE to the DaylightSavingsCollection. This collection had a string based indexer by year which has been replaced with the GetPeriod method.
- Data Verifier:
- Updated to check for overlapping daylight savings periods.
Version 3.2.6
- API Toolkits:
- FCINTER - Updated change_contact API to allowing objids to be used for contact and site identification.
- Core:
- DatabaseParameterFactory overload now accepts a schema field object in place of table and field names.
- ISchemaField now exposes CommonType and helper IsSearchable method.
Version 3.2.5
- API Toolkits:
- Added new .Net APIs to allow large internal note and phone logs to cases and subcases. The APIs use a unlimited text field to allow larger internal notes to be recorded. All other capabilities of Not/Phone logs are also available.
- The .Net ChangeCaseContactSetup object now has a SiteIDNum property that can be set for use in the ChangeCaseContact API.
- Core:
- Auto destination now supports db transactions.
- Fixed a bug so that the proper default element for HGBST list level is returned.
- If no default element is designated - return an active element with the lowest rank.
- If no default element is designated and there are no active elements - return an inactive element with the lowest rank.
Version 3.2.4
- Core:
- To workaround a bug in how the .Net Oracle client handles decimal values with high precision, we now truncate (via SQL) decimal fields to a precision matching what is specified in the Clarify schema.
- The result of a DateTime conversion to a timezone with no GMT offset now has DateTime.Kind value set to Utc
- Resolved a rare configuration issue that could occur during SDK initialization if DBProviderFactory was used before the SDK initialization.
- API change: To facilitate testing Hgbst and Gbst lists types are now exposed via Interfaces rather than concrete classes.
- API Toolkits:
- Added a schema update for a participant table index which on pre Clarify 11 databases is missing a field.
- Fixed a bug in UpdateSite that would cause the site name to be overwritten with the siteId if the site name input parameter was blank.
Version 3.2.3
- API Toolkits:
-
A few of our APIs do multiple database updates breaking our convention that APIs should have transactional atomicity. These multi-update APIs are now invoked in a single transaction.
The following APIs are affected:
Logistics Toolkit
FieldOps Toolkit
Note: When calling the overload of these APIs having a transaction argument, as always, the API will use the given transaction.
- Core:
- Fixed a bug in ClarifyGeneric where inserting or updating a row on a table who schema has change fields present but no change date field would throw an error.
- Installer:
- Symbols for Dovetail SDK assemblies (.pdb files) are now packaged with the installer. Symbol files can be used to provide Dovetail Support with more context about unexpected exceptions when they occur.
They are not normally needed and do not have to be deployed with your code but they are good to have around in case of emergency.
Version 3.2.2
Version 3.2.1
- Core:
- Compatibility generic UpdateAll calls are now enlisted in the current session transaction when present.
This problem affected some Toolkit APIs.
- API Toolkits:
- Fixed a bug in CreateContactLineItem caused by a poorly constrained database query when the serial number argument was blank.
- Demos:
- Fixed log4net version details in the web demo application configuration.
Version 3.2.0
Version 3.1.0
- Schema:
- The SDK now includes optional schema for creating an exclusive relation to the user table using existing fields on the participant table.
This allows participants that are users to be used as business rule recipients. To take advantage of this optional functionality, apply
this schema using the file from the schema directory that is appropriate for your environment and schema editing tool.
- API Toolkits:
- Enhanced the
Yank API
so that it creates a participant record for the user from which the workflow object was yanked.
This enables for creation of a business rule to notify the user when an object was yanked from them.
Note this requires the optional exclusive relation from participant2user be added to your schema.
- When
Creating an Attachment Record
the doc_inst record created is now related to the activity entry generated for that attachment activity.
- Core:
Version 3.0.0
Requirement Change
Dovetail SDK now has 32 bit and 64 bit installers available.
-
The primary reason this is necessary is for applications using COM Compatibility (e.g. Dovetail Agent and Dovetail Admin, and Dovetail SelfService)
to have the correct native COM registration settings. Previously, applications that use the COM interfaces were required to run in a 32 bit (SysWow64) mode.
Customers using Dovetail Agent version 4.4 should use the 32bit installer as attachment uploading in those versions has a dependency on a 32bit COM object requiring them to be run in 32bit mode.
It is currently possible to install both 32 and 64 bit installers side by side.
For existing 64 bit SDK users - Migrating from the 32 bit installer to the new 64 bit navtive installer:
If running command-line applications that use COM Compatibility (such as JavaScript or VBScript using cscript.exe) on a 64 bit machine, they should be executed from the standard 64 bit command prompt. This is a change, as previous versions of the SDK only supported 32 bit COM applications.
Additionally, contact (web_user) authentication is now supported in 64 bit environments. This is commonly used in SelfService/eSupport applications.
The non-managed fc_crypt2.dll library is used for contact password encryption and decryption. The correct version of this library (either 32 or 64 bit)
will be installed as part of the Dovetail SDK installation process.
- API Toolkits:
- Changed fulfill and receive APIs - when doing partial request processing, new part request detail will default to the status/condition of the original.
- For partial Receive actions - the new part request detail objid and detail number are now returned in the toolkit result.
- Fixed a bug in Receive API where the AutoClose was generating an exception when creating the activity log.
- Fixed documentation for modify_case to have the correct method signature.
Version 2.4.12
- Installer Fixes:
- Deploying demo web applications to servers with multiple IIS web sites is now supported.
- .Net API:
- Added utilty method to StringCache to find supported locales.
- Factored user authentication support into ClarifyAuthenticationService. Simplifying non session user authentication.
- API Toolkits:
- Added an error check to prevent exception being thrown during a part transfer where the part instance detail could not be found.
- Core:
- Corrected a bug in ListCache and LocaleCache detection of objects with bad data.
-
Fixed a bug in conversion of datetimes between timezones. This issue would only occur if either
the source or the destination did not participate in daylight savings time, and only if the destination
timezone had a greater GMT offset than the source timezone.
Version 2.4.11
- Workflow:
- Fixed a regression when finding the next available file name for an attachment.
- Core:
- Contact authentication now requires that the contact have active contact and web_user records
- Added new Generic filter creation overloads for AND and OR filters. These new over loads allow you to give an array of Filters which you need to be ANDed or ORed together. Previously you could only apply AND and OR to two filters at a time.
- Added better error prevention for LocaleCache and ListCache. This will prevent most cache-releated Application start-up errors.
- API added for making it easier to generate ClarifyGeneric filters. See the FilterExpression class.
- Data Verifier:
- Added grouping for data verifier tests to add context for test categories.
- Added data verifier test to check for duplicate country-timezone MTM table entries.
Version 2.4.10
- Core:
- Interfaces for the LocaleCache and ListCache are now provided to make all caches more testable.
- Fixed Workflow Move operation so it would work non-transactionally.
- API Toolkits:
- FCINTER - Added new update_contact_objid_list API to allow a specific contact to be updated. This allows the correct contact to be updated if duplicate contacts (by name/phone) are allowed.
- FCCS - Removed the extraneous ", State = Open" from additional info when closing a case.
Version 2.4.9
- Installer:
- Dovetail SDK assemblies are now correctly registered with Visual Studio .Net to on 64bit versions of Windows.
Version 2.4.8
- Data Verifier:
- Fixed crash when saving test results in the Data Verifier application (only applies to .Net 3.5 environments.)
- Added data verifier test to check for duplicate view fields.
- Explicitly setting Data Verifier to build as a 32 bit application so that COM features can be verified in a 64 bit environment.
- API Toolkits:
- Fixed the CreateSubcase API: Added transaction support for the GetNextSubcaseNumber - this method was not correctly enlisting the current transaction if available.
Version 2.4.7
- Core:
- Fixed an Oracle performance issue with the SQL generated when querying empty strings as NULL (the default behavior.)
- File caching is now disabled by default. This feature does not significantly boost startup time on modern computers and often causes confusion about cache freshness after schema changes.
- Creating sessions without a username and password no longer causes failed logins.
- Fixed another Generic usage scenario related to distinct queries against tables or views ordered by searchable fields.
- API Toolkits:
- Fixed an Oracle performance issue with the SQL generated when querying empty strings as NULL (the default behavior.)
- Fixed the RelateCaseToParentCase API - Now enforcing that a case must be designated as a parent case before a child case can be related to it.
- Fixed the UpdateCaseCommitment and UpdateSubcaseCommitment APIs - Now enforcing that the specified Commitment must be related to the specified Case/Subcase to be updated.
- Fixed the ForwardSolution and RejectSolution APIs - The notes field is not appended to the Solution description field.
- Fixed the Reject<object> APIs - The activity entry for a Reject action now uses the "RETURN" keyword instead of "FORWARD".
- Fixed the Accept<object> APIs - The performing user must be a member of the specified queue to perform an Accept.
- Fixed the Workflow APIs - Acting and target users now need to be active in order for workflow operations to be successful. For example only active users can Assign a case to another active user.
Version 2.4.6
- API Toolkits:
- Fixed database transaction support for toolkit workflow APIs and the Log Email In API. These APIs were not correctly enlisting workflow operations into the current transaction.
- Core:
- Changed the order of how authentication is ordered during application initialization. Dovetail SDK will now attempt to use Clarify encrypted credentials based on the connection string first and then if that fails unencrypted credentials.
- Fixed an Generic usage scenario which resulted in bad SQL when doing distinct queries against views ordered by searchable fields.
- Fixed a localization issue that prevented creating Clarify or Compatiblity sessions when the computer or session culture is set to Turkish.
- Workflow Manager GetNextFileName now truncates the filename to fit within the attachment title field.
- Fixed a bug related to distinct generic queries being sorted by searchable fields that were not also in the list of data fields selected.
Version 2.4.5
- API Toolkits:
- Removed dependency on VisualBasic.Compatibility.
Version 2.4.4
- API Toolkits:
- Updating a dialogue or communication whose dialogue is closed is now allowed.
Version 2.4.3
- API Toolkits:
- Corrected bugs related to the status and act entries created when using the new Dialogue and Communication APIs.
- Core:
- Workflow Manager now creates all related participant records for operations on object types using the fact/participant model.
- Workflow Manager now supports database transactions.
Version 2.4.2
- API Toolkits:
- Added three new .NET InterfacesToolkit APIs. These new APIs are not exposed via COM compatibility.
- Core:
- Fixed a bug in the SchemaCache where IsTimeZone would throw an exception if there are duplicate time zones.
- Updated GetSafeBooleanFieldValue to return False for DBNull.Value
- Correct problem where on Sql Server generics doing parameterized queries against sql view fields were being typed as text.
- Compatibility:
- Security Support Added
To help avoid SQL Injection attacks we have added support to FCSqlExec for binding parameters (via AddSqlParameter).
We recommend that all SQL queries built using user input should executed with FCSqlExec using bind parameters. For more information see the Execute and ExecuteReturnRows for examples.
Version 2.4.1
- Core:
- Fixed a bug in the SchemaCache where IsValidField would return true when given a field name that is a many to many relation name. Relation names will still return true if the schema table contains the foreign key for that relation.
- When APIs are building case history additions that exceed the maximum case history size limit (~32K) will cause the history to be slightly changed in order to trigger the change date field. This change allows for API calls to consistently update the case's last modified timestamp.
- Updated ClarifyVersion to support schema revisions newer than Clarify 12.5.
- Added better logging of Session Manager configuration settings.
- Compatibility:
- Corrected a bug in FCFO: modify_time_log and modify_expense_log were replacing entire case history with the most recent entry.
Version 2.4.0
In this release we focused on adding support for Amdocs 6 thru Amdocs 7.5.
- Core:
- Generics now support inserting records for tables having a guid field. New records created for a type having a guid field present will have a globally unique value assigned to that field.
- Generics will ignore and not allow manipulation of identity fields. Identity fields are rarely used in the baseline schema and are defined as table fields having a generic field id of 154.
- Fixed a bug caused by the maximum datetime value being slightly too early. It is now 12/31/4712 11:59:59PM.
- Toolkits:
- The create contact API now sets, when present, the contact_id field using the Contact ID numbering scheme.
Version 2.3.20
- API Toolkits:
- Updated the Time & Expense APIs to improve the Case History interaction. The notes for the onsite log will be included in the history text when the notes get updated thru a create or update Time or Expense API call.
Version 2.3.19
- Core:
- Corrected regression where lookups of missing strings in the StringCache would throw exceptions.
- Corrected a configuration problem with the Dovetail SDK Web Service and demos web application configuration files. The reference to the Log4Net configuration handler is now fully qualified.
- Compatibility:
- Corrected a bug in FCCL: receive_pr and receive_pr_no_trans were backwards in respect to finalizing the transition for the Receive process.
- API Toolkits:
- Errors occurring when creating cases and subcases and employees were not getting logged and would be thrown even when the session ThrowErrors property was false.
Version 2.3.18
- API Toolkits:
- Corrected a bug in the Before and After Case/Subcase Status relations for an Email Log in LogCaseEmailIn and LogSubCaseEmailIn.
- Corrected the Case/Subcase history note that gets generated during LogCaseEmailIn and LogSubCaseEmailIn.
Version 2.3.17
- API Toolkits:
- Added four new .NET SupportToolkit APIs. These new APIs are not exposed via COM compatibility.
Version 2.3.16
- API Toolkits:
- LogPartsUsed APIs now create time bombs in the correct order so that update inventory events occur last.
Version 2.3.15
- API Toolkits:
- Added capability in create_time_bomb to specify the escalation time. This will allow APIs to be clear which order the time bombs that get generated should be processed.
Version 2.3.14
- API Toolkits:
- Corrected a bug for the UpdatePartRequestDetail API where it did not related the time bomb to the current employee
Version 2.3.13
- API Toolkits:
- Corrected a bug for the LogPartsUsedConsume API where it incorrectly related the Consume act_entry to the demand_dtl record - now it correctly relates it to the site
- General:
- Oracle Session Manager now checks to see if sessions exist before retiring expired sessions.
Version 2.3.12
- Core:
- Corrected a bug for Ms Sql Server unicode databases that was introduced in version 2.3.9 causing NText fields to be treated as non-unicode data.
- Oracle queries involving large text fields (Long, CLOB) now set the field's data type based on existing fields in the database rather than the version of the database platform.
- Dovetail SDK performance counters are now disabled by default. The configuration documentation has been updated to reflect this.
- Compatibility:
- Corrected an issue where methods that return ADO Recordsets such as FCSqlExec or GetTimezoneList could throw an error when returning unicode data.
Version 2.3.11
- API Toolkits:
- FieldOps toolkit LogPartsUsed API - The session user is now related to the part_trans record when no user is specified. Also, the correct timebombs and activity entries for part request details were not always being created.
- Logistics toolkit CreatePartRequestDetail API - A case modified timebomb is now created when a case id is specified.
Version 2.3.10
- Core:
- Fixed issue where AppendFilterInList could generate SQL that was not compatible with the database for large lists.
Version 2.3.9
- Core:
- Fixed Oracle issue with inserting or updating more that 4000 bytes to Clob fields.
Version 2.3.8
- General:
- Fixed problem with how additional fields to some API calls were being processed.
- Error messages for exceptions thrown by Dovetail SDK were not being retrieved properly. Error messages not found in the StringCache are now retrieved from the 'ErrorStrings' resource in the thrown exception's assembly.
- Fixed a problem with the installer where it was adding incorrect database connection settings on configuration files without existing settings.
Version 2.3.7
- General:
- A dependency issue was fixed with the License Installer.
Version 2.3.6
- Core:
- Compatibility:
- Fixed problem with GetHgbstList failing for list elements having titles with leading or trailing spaces.
Version 2.3.5
- Core:
- Clarify SQL Views were not being added to the Schema Cache.
- The Schema Cache failed to load integer and double fields when they contained NULL values. They now default to zero when a NULL is in the database.
Version 2.3.4
- API Toolkits : The following bugs have been fixed:
- FCFO - The activity logs created by log_parts_used are now consistent with the Clarify client.
- Core:
- The installer was not adding the fcSDK bin directory to the system path. Classic asp web applications require that fc_crypt2.dll be in the path.
- 2.3.3 introduced a bug in the ListCache for Global Application Lists causing elements with duplicate titles to be excluded from the cache.
Version 2.3.3
- API Toolkits : The following bugs have been fixed:
- FCFO - create_onsite_log was validating the resolution against the wrong resolution list.
- FCFO - modify_expense_log was not properly updating the onsite_log if the expense rate was changed from non-zero to zero.
- FCFO - modify_expense_log could throw an error: exp_type is not a valid field.
- FCFO - modify_expense_log was not properly updating the onsite_log if the billable flag was changed.
- FCFO - modify_time_log was not properly updating the onsite_log if the duration was changed from non-zero to zero.
- FCFO - modify_time_log was not properly updating the onsite_log if the billable flag was changed.
- FCFO - log_parts_used was not properly updating existing non serialized site parts. It had been creating additional site part records.
- FCFO - log_parts_used consume no longer updates the site config.
- FCFO - log_parts_used consume now moves the inventory part into the Service COGS expense GL location rather than the Part Used Variance expense GL location.
- FCFO - log_parts_used could throw a null reference exception when setting the from location and that site configuration was not being updated.
- Core:
- ClarifyApplication initialization no longer fails when Hierarchical Lists, and Restriction Groups have entries with duplicate names. A warning is now logged when the duplicate item is encountered during initialization.
Version 2.3.2
- API Toolkits:
- FCFO - The LogPartsUsed methods weren't properly setting the hdr_ind column on the part_inst record when the quantity of quantity-tracked parts was negative. It now correctly sets the hdr_ind to 2 if the quantity is negative, and to 3 if the good and bad quantity are both zero.
- Compatibility:
- FCSession.LoginTime had a bug that could cause a Stack Overflow error. This has been fixed.
Version 2.3.1
-
Requirement Change The fcSDK is now built on the .Net 2.0 framework. It is now required that the .Net 2.0 framework is installed.
-
Assembly Structure Change The assemblies related to COM compatibility and the API Toolkits have been moved into their own assemblies. This change will not affect COM users. If you are using the FChoice.Toolkits.Clarify namespace your projects will need a reference to FChoice.Toolkits.Clarify.dll.
- API Toolkits:
- FCFO – The LogPartsUsed methods were not creating the proper activity logs when an inventory transaction occurred. It was creating an activity entry of “Transfer”. It now correctly creates an activity entry of “Update Inventory”.
- FCFO – LogPartsUsedRemove now allows specifying a RemoveQuantity.
- FCFO – The LogPartsUsed methods have been modified so as to allow the quantity of an inventory location to go negative.
- FCCL – A bug was fixed in UpdatePartRequestDetail. Previously, if a user didn't specify a value of an optional parameter, the value was over-written. This has been fixed.
- FCFO – LogPartsUsed was not properly relating the part_used and part_trans records. This has been fixed.
- FCFO – LogPartsUsed was not properly updating the PartRequestDetail condition. This has been fixed.
- FCCL – The Receive and Fulfill methods were creating an extra activity entry and time bomb. This has been fixed.
- Compatibility:
- Methods that return an ADO recordset (such as GetTimeZoneList) could throw an error if a custom column had been added to the table with a datatype of Guid or byte array. These datatypes are now handled properly.
- Core:
- ClarifyApplication can now be removed from the AppDomain using DeInitialize
Version 2.2.6
- API Toolkits:
- FCCL, FCFO - An unnecessary potentially lengthy query was removed from PartTransfer.
- FCFO - LogPartsUsedRemoveSetup property InstallAtSite has no effect and has been marked obsolete.
- FCFO and FCCL APIS that performed a part transfer: Fulfill, PartTransfer, Receive, LogPartsUsed - could have exceptions that did not bubble up to the caller.
- FCFO - LogPartsUsed was not always querying for the "From Inventory Location" which could cause a null reference exception.
- Compatibility:
Version 2.2.5
- API Toolkits:
- Fixed bug involving improperly formatted datetimes when using the AdditionalFields property in Toolkit APIs. The FCSession's CurrentCulture is now used to properly format the datetime.
- FCCL - FullfillPartRequest result now includes the objid and id_number of the PartRequestDetail created when a partial fulfill occurs.
Version 2.2.4
- API Toolkits:
- FCINTER and FCCL - Creating and updating contacts and modifying a part request detail now output timebomb information for Rulemanager to use.
Version 2.2.3
- Core:
- SqlHelper - Corrected bug in batching mechanism for INLIST queries.
- General:
- The fcSDK installer now requires that .Net 1.1 Service Pack 1 be present. This is due to a breaking change in .Net 2.0 that affects Performance Counter support. Please see this solution for more details.
Version 2.2.2
- Core:
- Fixed a bug when using FCGeneric.NOW_DATE that would use the application host DateTime rather than the database's. This problem would only exibit when Application Host and Database server timezones were different.
- Fixed issue with an Sql Server 7 when grace license events occurred.
- API Toolkits:
- FCSFA and FCCC - Create Contract Line Item : Two validations have been eliminated for Clarify compatibilty. It is now allowed to create Contract Line Items for tracked non serial numbered parts (Error code -11) and serial numbered parts with quantity greater than 1 (Error code -12).
Version 2.2.1
- Core:
- FCGeneric.CloseGenerics() now correctly clears data from the generic's DataTable.
- Fixed a multithreaded locking issue during StateManager initialization.
- Loading of the SchemaCache could fail in rare situations due to non unique keys for schema view information objects.
- Fixed bug where Workflow's Yank operation would create the wrong kind of time_bomb object.
- Compatibilty:
- FCSession.CloseAllGenerics() had a bug preventing it from working correctly.
Version 2.2
- Core
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): FCGeneric.Filter has been renamed to FCGeneric.RawFilter. This was done to make room for the new Query Filtering mechansim.
- There is a new Query Filtering mechanism in place that allows for more complex filters against Generic objects. Please take a look at the Developer Walkthrough - Advanced Filtering for more information.
-
New optional fchoice.clarify.ignoredatetimemilliseconds
configration setting added to better support compatiblity with older versions of Clarify Classic Client.
- Fixed login bug where an Employee's last_login was being incorrectly updated during a Contact login of the same login_name.
- On MSSQL ClarifySession.SetPassword() no longer requires that the application user have sysadmin rights.
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): The string/name overloads (as opposed to the ID overloads) of the GetFCString
method on StringCache
now require another parameter: applicationName
since application name is a required parameter to generate unique name identifiers for individual FC Strings. The lack of an applicationName
argument was an oversight in previous versions of the fcSDK.
IMPORTANT NOTE FOR CUSTOMERS USING CUSTOMIZED fcSDK ERROR MESSAGES:
Any existing strings that were imported via the fcerrors.dat and/or customized will have to be updated to have a proper application name. The default application name for all errors in the fcSDK is "fcSDK". If you wish to have multiple customized error messages for multiple instances of the fcSDK, you can override the application name using the fchoice.fcstringappnameforerrors configuration setting. For more information, see the Basic Configuration Guide
- Auto Destination
- Rules with the <> operator were not being parsed properly.
- Stricter validation is now present for badly formed Rule Clauses.
- Compatibility
- Fixed the interaction between FCGeneric.Delete() and cursor movement methods (MoveNext, EOF).
- FCApplication.InitializeFull() was not utilizing settings contained in fc.env. Configuration settings from the fc.env file are now pulled in but database authentication settings like fchoice.dbtype and fchoice.connectionstring are ignored.
- API Toolkits
- All Toolkit setup objects that require a User session now have a UserName property which if present is required when the ClarifySession's login type is Contact.
- Fixed datetime localization issues when APIs are invoked using non-US cultures.
Version 2.1.3
- Compatibilty: Fixed Compatibility issues when GetHgbst methods return no elements.
Version 2.1.2
- Core
- Licensing is now more strictly enforced for Session lifetime.
- Improved performance for parameterized queries against non-unicode string fields, allowing the database to optimize the query.
- Auto Destination
- Fixed bug with AUTO_DISPATCH not being handled properly.
- Fixed bug with line returns in rule clauses causing rules to fail.
- BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): Classes:
Path2Sql
and AutoDestRuleClause
have been marked internal.
- Upgrading from fcSDK 2.1.1 and earlier:
If your implementation of fcSDK is using the Data Restriction feature, it is recommended to update your schema. The following change will allow the Data Restriction feature to benefit from improved performance.
- Add the 'fld_name' field to table res_sql_clause. Refer to the {install dir}\schema\fcSDK_schema.sch file for the exact field definition.
- Populate 'fld_name' with the name of the field being restricted in the data restriction's 'clause' data field.
For example, if your clause entry is 'x_res1 = |restriction1|' you would populate the fld_name data field with 'x_res1'.
Version 2.1.1
- Core
- Fixed a bug in the
GetAttachmentFilePath
method on WorkflowManager
that resulted in a non-unique file name being returned.
- Fixed ClarifySession timeout bug causing the default (Memory) session state manager to timeout sessions even if they were being retrieved.
- Compatiblity
- The installer was missing the COM ADO Primary Interop Assembly. It is now installed to the GAC.
Version 2.1
- Caches
- Streamlined loading of cache data, reduced memory footprint during lifetime of fcSDK based applications.
- Added better support to
ListCache
for retrieving active or inactive list items.
- Renamed the throwErrors variant of
ListCache.GetHgbstList
to ListCache.TryGetHgbstList
- BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): The signature of
ListCache.GetHgbstList()
has changed.
- Added optional support for localized GBST and HGBST (custom and user-defined pop-up) lists. Note that new schema changes are necessary to use this feature. Please see the install guide for more information.
- Core
- Refactored handling of text data to be more CPU and memory efficient as well as culturally-aware for internationalization purposes.
- FCSession performance counters were not decrementing properly.
- Large Query count threshold (fchoice.sqlbigquerycountthreshold) was only working if with the time threshold was set (fchoice.sqlbigquerytimethreshold).
- A short-term session leak was happening when using the fcSDK .NET interfaces (Compatibility was not affected) and an exception was thrown during login.
- Implemented the IDisposable pattern for ClarifySession and FCSession. This makes it easier to manage the lifetime of short-term and/or one-off sessions.
- Fixed a bug when using a user with an encrypted password (such as a Clarify 'employee' user) as the application user for the fcSDK (the one that appears in the fchoice.connectionstring parameter) which caused an exception to appear in the log incorrectly saying the login failed.
- BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): The
SetPassword
method on ClarifySession
is now static (Shared
in Visual Basic).
- Added new functionality to the WorkflowManager (in the
FChoice.Foundation.Clarify.Workflow
namespace):
- New Method:
CreateActivityLogEntry
- Assists in creating an activity log entry for a particular object.
- New Method:
CreateCasePhoneLogActivityLogEntry
- Assists in creating the special phone_log entry when logging phone notes to a case.
- New Method:
CreateAttachmentRecord
- Creates doc_inst and doc_path records for file attachments on various objects.
- New Method:
GetAttachmentFilePath
- Generates a unique file name according to a configurable pathing scheme for storing of file attachments.
- New Method:
GetNextFileName
- Generates a unique file name given a folder path and a base file name.
- Compatibility
- FCSession Item collection now allows adding or updating items in the collection via COM.
- Toolkits: Fixed issue with many non-list Compatibility Toolkit methods not handling additional fields.
- Fixed issue with generics that are setup via
FCGeneric.TraverseFromParent
not being properly added to the parent Generic's bulk. generic.Bulk.UpdateAll()
operations were not working correctly for this scenario.
- Fixed issue with
FCGeneric.Delete
for generics involved in a Traversal. The row Position was not being set correctly after the Delete operation.
- New method
LogEx
added to FCSession and FCApplication to allow access to different log levels in FCFL.NET.
- List Cache methods now have improved Compatibility with FCFL for error handling.
create_act_entry
and AddAttachment
on FCSession
now use the new methods on WorkflowManager
(see above).
- General
- Installer updated, integrating demos and allowing administrators better control over the install process.
- DataVerifier: Added a new HGBST test to determine whether there are any elements that reference more than two shows.
- The FChoice.Common, fcSDK, and log4net assemblies are now registered into the Global Assembly Cache (GAC) during install. These assemblies will appear in the 'Add Reference' dialog in Visual Studio.NET.
- License Installer: Fixed crash when the Database login failed.
- Web Services
- The Web Services server application, client libraries, and demos are now included as part of this package.
Version 2.0
Special:
- FCFL.NET is no longer a separate product. It has been grouped together with new .NET-based API Toolkits to form the new fcSDK
product.
Fixes and Additions:
- Core fcSDK:
ClarifyGeneric.AppendFilter
overload added for filtering integer fields known to be booleans.
WorkflowManager.ChangeStatus
now supports the Open-Reject status for Part Requests.
- The
DataFields
property on ClarifyGeneric
no longer has any effect during an Update operation. DataFields
will only constrain Query operations. It is still the case, however, that only fields whose values have changed will be included in the UPDATE statement to the database to increase performance of update statements.
- Data: SqlHelper now catches exceptions thrown by the database client and ensures that they are logged (which used to not happen in all cases when FCFL.NET was used through the Compatibility layer). Also, error information will appear in the query summary to allow log filtering.
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): The concept of a bulk has been completely removed from the .NET core APIs (FChoice.Foundation and FChoice.Foundation.Clarify).
The compatibility layer (FChoice.Foundation.Clarify.Compatibility, or FCFLCompat.dll) is unaffected and will still behave like normal. Existing applications written to the COM layer WILL NOT be affected by this change.
In order to work with
ClarifyGeneric
, you must first create a new ClarifyDataSet
object. The CreateGeneric
method has been moved from ClarifySession
to ClarifyDataSet
.
For more information on how to make the move from using ClarifyBulk
and ClarifySession.CreateGeneric
to ClarifyDataSet
, please see the updated FCFL.NET Developer Walkthrough of fundamental objects in FCFL.NET
as well as the API documentation for the ClarifyDataSet
object.
LogManager
was not handling invalid configurations well. A stack overflow would occur when attempting to alert the user about the bad configuration.
- On Oracle 8.0.x and earlier databases, strings with non ascii or extended ascii charcters non ASCII strings would cause garbage data to be inserted into the database. This setting effectively disables Unicode support for Oracle 8.0.x or earlier databases. Non-ASCII charcters are converted to question marks (?). There is an application configuration setting fchoice.oracle.forceascii7bit to control this behavior.
- Multiline text fields do not always display properly in the Clarify windows client if there are carriage returns present. CRLF is now converted to LF. An application config setting fchoice.clarify.convertcarriagereturns was added to control this behavior.
- Compatibility
FCBulk
FCGeneric.CloseGeneric
was putting generics into the DefaultBulk causing scenarios where if the DefaultBulk was then queried, long running queries could result.
Now, after CloseGeneric() is called the generic does not belong to a Bulk and should subsequently not be used.
FCSession.create_act_entry
now ensures that the act_entry generic and the generic of the related object are in the same bulk.
FCBulk.Update
would not always relate records correctly.
FCGeneric.DBObjectName
Note: for best performance do not use FCGeneric.DBObjectName
to set a Generic's object name. Pass the object name to CreateGeneric()
.
- When using
FCGeneric.DBObjectName
to set the object name of an FCGeneric compatibility object, not recommended, the bulk membership of that Generic wasn't getting set up properly. The Generic would not get queried or updated during bulk.UpdateAll or Query operations.
- Better compatibility when using
FCGeneric.DBObjectName
with a previously used Generic.
- FCGeneric's RowLimit and MaxRecords properties
- Compatibility
FCGeneric.RowLimit
was not working properly (throwing errors when there should not be any error) against Oracle 7 and Oracle 8.0.x databases.
- Compatibility
FCGeneric.MaxRecords
is not supported on Oracle 7 and 8.0.x databases. Setting this property will not throw an error. A warning will be logged to the log file and the query will proceed as normal, returning all possible rows.
- Please see the System Requirements page and the updated documentation for the
FCGeneric
compatibility class for more information on the MaxRecords
issue.
- For FC.env files, application configuration settings will now override classic FC.env database parameters. The Configuration Changes document discusses this feature.
GetState
and GetCountry
methods were not throwing exceptions for invalid states or countries.
- AutoDestination
- Rules with trailing whitespace could fail.
- DataVerifier
- The Daylight Hour verifier now properly checks for duplicate time zones.
- Added a new test to check for HGBST (User defined) lists which are not related properly to child shows/elements
- The Login form now respects the fact that the Database Name is not required for Oracle databases.
- Added better logging in general, and better trapping of unexpected errors thrown by the FCFL.NET and Compatibility verifiers
- Stored procedure requirements are no longer checked on Oracle pre-9 to match the requirements specified in the fcSDK documentation.
Logging:
- Logging library (log4net) version updated to 1.2.9.
- The logging samples were updated to remove the c-style escape sequences (such as \t and \\) as they are no longer necessary.
Installation:
- Web and Windows Forms demos were missing required assemblies.
- Sql Server Stored procedures were missing proper permission granting statements.
Version 1.2.1
Fixes and Additions:
- Core FCFL.NET:
-
IMPORTANT CHANGE: ObjID and Numbering Scheme value generation is now handled by two new custom First Choice stored procedures (fc_new_oid and fc_next_num_scheme). This makes objid and num_scheme generation consistent across all
Clarify™ versions on all database platforms (except pre-9 Clarify™ instances running on Oracle™, see note below). These stored procedures
are now a requirement of installation for fcSDK.
fcSDK will not operate properly without
these stored procedures loaded into the database (all objid and num_scheme generation will fail).
PLEASE REVIEW THE INSTALLATION GUIDE BEFORE INSTALLING THIS VERSION. The install guide has been updated to reflect this and other new changes.
NOTE: The fc_new_oid stored procedure is not required for versions of Clarify™ before 9 on Oracle™ databases.
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): CacheManager.UpdateDataCache() and CacheManager.UpdateSchemaCache() have
been replaced by CacheManager.UpdateCaches(CacheType). CacheType is a new enum with the following values:
Data, Schema, All. If you wish to update a group of caches, call UpdateCache( CacheType.Data ) for example.
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): Custom caches (subclasses of CacheBase) no longer have an IsSchemaCache property. It has been replaced by a CacheType
property which returns a CacheType enum value signifying which type of cache is it.
-
BREAKING API CHANGE (.NET APIs only, Compatibility unaffected): Oracle 7 support for the
ClarifyGeneric.MaximumRows
property has been limited to throwing an exception when the maximum number of rows in a query result is exceeded. All other supported databases automatically constrain the query to the MaximumRows limit. Please see the SDK documentation for more details.
- Fixed a race condition bug in GetNextNumScheme that occurred under very high stress conditions.
GenericDataRow:Unrelate()
: Fixed bug causing Unrelate to fail for Mandatory relations. ClarifyBulk.Remove()
was not setting the generic's bulk to the session default bulk.
- Hierarchical Lists: Default elements for a list level could possibly be set to an InActive element if no Default element was present. Now, when no Default element is present the first Active element will be selected.
ClarifyGeneric.AppendFilter()
Fixed scenarios where AppendFilter would not work properly in concert with Filter property.
- FCGeneric and ClarifyGeneric weren't tolerating nullable database date fields. Calls to Fields-Get and Duplicate would throw an error if one of the date fields was DBNull.
- Fixed a bug that caused unnecessary error statements to be logged when there were rows in the fc_string table with an empty string or null in the 'name' column.
- Compatibility
- Setting FCGeneric fields was not handling coercion of strings to non-integers types containing number formatting.
For example setting strings like: "$1.23", "$2,032.41" to a decimal generic field now works.
- FCApplication.is_it_date_field did not process fields on views correctly. It now supports fields on views.
- Fixed an error related to setting the BulkName of a FCGeneric before calling TraverseFromRoot.
- error_handler will no longer invert the error_num parameter if the message starts with "WARNING"
- Session Portability: It is now possible to call
ClarifyApplication.GetSession( sessionID )
with a session Id that was created via Compatibility.
- AutoDestination
- Fixed a bug with rules containing dates in constraints.
- SQL statements generated to resolve paths now uses parameter bindings for better performance.
- Performance Counters
- Performance counter functionality can now be disabled for individual applications. See the Basic Configuration guide for more information.
- Installer now prompts to set required performance counter permissions for all operating systems.
- Data Verifier now supports Oracle 7 and 8.0 databases.
- Data: SqlHelper now logs whether a query is considered "large" to allow filtering of large and small queries. Please see the new
logging config sample documentation which shows how to redirect logging output for large queries.
Installation:
- The Installation Guide is no longer present as a PDF. It is now embedded in the API Documentation.
Version 1.2
Fixes and Additions:
- Windows Demo Installer:
- Fixed the missing FChoice.Common.dll for the Console Demo.
- Added shortcuts to demo executables and the URL of the web demo.
- AutoDestination:
- Compatibility:
FCSession.use_list
Fixed support for setting date fields to -999 or "-999" to represent the current date.
- FCApplication was requiring the db_name parameter in the FC.ENV even for Oracle. Added a property to DbProvider called "RequiresDbNameParameter" to allow utilities and FCFL.NET to determine whether a given provider (i.e. Oracle) needs the db_name parameter or not.
- Logging :
- LogManager now looks for the log config file in the AppDomain's BaseDirectory. Previously it was looking in the current working directory.
- Added more verbose logging to
SqlHelper.Execute<x>
methods.
- Oracle : SchemaCache's schema queries for View Join Info records uses a CASE statement which isn't supported in Oracle 8.0.x or earlier this was thought to be only an Oracle 7 issue.
- Schema: Support for data type '6' was missing (char array)
- Foundation: ConfigItems in the database containing non-standard values for the data type would fail. Added a new
ConfigItemValueType
enumeration 'Unknown' to represent these types and expose access to their value via the ConfigItem.ValueTypeRaw
property.
Version 1.1
Fixes:
ClarifyGeneric.Update()
of tables with change date fields in a certain order could throw an exception.
- Navigation of related rows was not possible when traversing OTM relations from a parent generic to a child generic of the same table.
- Users with encrypted passwords can now be used as the application user.
- Some default error messages were not being loaded properly.
SchemaCache.IsIntegerField
did not properly handle invalid fields on views (an proper exception was thrown, but with an incorrect error message).
- Data Restriction fixes.
- Compatibility : Incorrect datatype values returned by MockAdoField.DataType for Date and TinyInt types.
- Compatiblity:
MockAdoField
now supports -999 or "-999" when setting a datetime field to be the current time.
- Compatiblity: build_lists was not checking for null or empty field parameters.
- Auto Destination had an issue with multiple rule clauses having bad SQL queries
- Installer: corrected installer issues and added uninstall shortcuts.
Version 1.0
Initial Release