HOME | WEBCAM | CONTACT
 

DM 5.3 Patch 4 is now available

November 8, 2011 by Matt Hotujec

On Nov. 2, Open Text released DM 5.3, Patch 4.  It contains over 40 fixed issues.  Among the highlights:

  • DM Viewer now works in Windows 7, 64-bit
  • SearchServer fixes to prevent index corruption, particularly when building a new index
  • Default format for new documents now configured at the workstation level rather than at the library level.  This means you can have workstations with Word 2003 default to saving in .doc format and Word 2007/2010 default to saving in .docx format.

After applying Patch 4, you must also manually run an update to the C++ runtime prior to running DM Server Manager.  You may also need to reboot your server after applying Patch 4.

EDV now supports Oracle!

June 21, 2011 by Sarah Salo
The wait for Oracle support is over!

 

It’s a bird! It’s a plane! Beneath the mild mannered spectacles and savvy suit, it’s there for the calling: Oracle Database Server for EDV!

 Want to know more? Contact us and we’ll jump in the nearest phonebooth…

 

 

 

 

 

 

 

 

Product Brief: iManage WorkSite FileShare

May 18, 2011 by ADV Guest

submitted by ADV Guest Blogger ~ Eli DeLosSantos, Partner Manager for Autonomy.

Work directly with WorkSite using Windows Explorer and non-integrated applications to Open and Save documents and Import files

iManage WorkSite FileShare is an application that provides access to WorkSite from a user’s desktop simply by mapping a network drive. FileShare enables WorkSite to be accessed like a network file server, allowing direct access from Windows Explorer and the standard Windows Open and Save dialogs used by most Windows applications.

This enables users to Open, Modify, and Save documents directly from applications that have no WorkSite integration, drag-and-drop files into and out of WorkSite using Windows Explorer, upload files from WorkSite directly into Web applications, and save files directly into WorkSite from Web applications. FileShare also facilitates working with linked files and provides a way for scanned content to be saved directly into WorkSite.

Work from a Familiar and Convenient User Interface

To access WorkSite FileShare, users simply map a network drive letter to the WorkSite FileShare Server. No client software installation is required on a user’s workstation. From Windows Explorer, all of the current Client Files, Matters, Engagements, and Projects that a user is working on are displayed as a folder. Users can navigate WorkSite in the same way folders can be accessed on a file server. Right clicking on a document enables a user to perform the same actions as they can on a document stored on any other drive such as Open, Copy, and Send. With little to no training, end users can access the “zero-footprint” client and begin contributing content without any change in how they work.

Get all the Benefits of WorkSite without any Change in Behavior

Users can continue to work from desktop applications in the same way they always have. The WorkSite FileShare server brokers all interaction with the WorkSite server. The WorkSite server continues to control the content, provide access, apply folder-based metadata, administer security, and maintain a comprehensive audit trail. FileShare combines the easiest to learn user interface with the peace-of-mind you get from knowing content is managed securely in WorkSite.

The simplicity of accessing content with FileShare encourages and reinforces the use of WorkSite. Even non-integrated applications can now manage content in WorkSite, enabling the complete client or matter file to be managed effectively.

The zero-footprint client also means less maintenance investment in patching and updating client images. WorkSite FileShare is a low total-cost of ownership option that allows users to incorporate good document management practices even for non-integrated client applications.

A World of Possibilities

WorkSite FileShare enables organizations to leverage WorkSite for applications that previously could not open or save content directly in WorkSite; and, WorkSite FileShare extends WorkSite’s reach to users that require fast access to content from anywhere on their desktop.

Customer Benefits

As firms invest in productivity applications, and enforce company policies regarding the management and retention of information, it is imperative that the integrity of client, matter, engagement, and project files is maintained with current and complete content. In addition, users need to be able to work efficiently and in familiar ways to be productive. WorkSite FileShare helps accomplish both simultaneously with benefits for both the firm and the business users.

Productivity, efficiency, and consistency

– Easy to use, familiar Network File Share interface

– Compatible with broader set of applications, end user roles, tasks

– Quickly able to import contents, even file hierarchies via drag and drop

Compliance

Content is less likely to be stored and lost on individual computers or file servers

Soft Cost Savings

– Reduced training investment, works like a standard file share

– Leverage common DMS infrastructure across more departments for more value  

 - Content imported into WorkSite via FileShare will have the appropriate security, auditing, versioning, and back-up strategies

Hard Cost Savings  

– No need to invest in custom, application-specific integration work

– Less time spent on client-side rollouts, coordination of client image updates

– Faster server-side maintenance for patches, updates

Please visit www.autonomy.com to find out more.

eDOCS 5.3 MSI Scripting Tips + Tricks

May 16, 2011 by Dave Kane

Since Open Text moved from using the “setup.exe” to a MSI file, things have gotten easier. However, customizing that MSI for individual installations still takes some work. Then there is the whole issue of deploying it out to your workstations. Make that them out to your workstations. There are separate MSI’s depending on if your workstation is 64 or 32 bit.

1. Find yourself a good editor. Open Text in their presentations have suggested Orca MSI editor. I’ve been using InstEd. I can’t compare the two because I haven’t used Orca, but I’ve been happy with InstEd.

2. Use Transforms. It is quicker and easier to create and edit Transforms. You can have different Transforms for different installations. Say you only want to install DM Imaging on certain machines, create a separate transform. You don’t mess with the original MSI distributed by Open Text and it keeps your command line a lot shorter.
Sample: msiexec.exe /i “%dmfiles%\eDOCS DM 5.3 Extensions (x86).msi” TRANSFORMS=”%dmfiles%\eDOCS53Transform86.mst” /qn /l*v “%TEMP%\DMInstall.log”

3. Testing for your processor. I write command files for doing the installation for our clients. If they have an automated way to distribute the installation, they can either pick what they like from the command file or use the command file to push the install. Because many of our clients are in a mixed environment with new machines being 64 bit and the old ones still being 32, we needed a good way to test which MSI to install. I borrowed this test from someone else because it works well.
IF /i .%PROCESSOR_ARCHITECTURE% == .x86 GOTO Install32Bit
IF /i .%PROCESSOR_ARCHITECTURE% == .AMD64 GOTO Install64Bit

4. We always had a separate step for applying the custom registry keys. Here is the other thing that is great about using transforms, you can import them directly into the transform. That way, MSIEXEC takes care of applying them for you. With InstEd, you simply right-click on a component and import your registry file.

Please feel free to share your own tips and tricks. Lord knows I’m still learning myself. What do you find useful?

eDOCS 5.3 ID Generation Change in MS SQL

January 10, 2011 by Brent Langford

You may be aware of some changes with eDOCS 5.3.  Did you know that the backend generation and storage of the key id’s (SYSTEM_ID, DOCNUMBER, VERSION_ID, and NEEDS_INDEXING) has been changed when using MS SQL?

The DOCS_UNIQUE_KEYS table has been replaced with four separate tables:  SEQ_SYSTEMKEY, SEQ_PROFILE, SEQ_VERSIONS, and SEQ_NEEDS_INDEXING.  For most environments this change is not an issue.  However, if you have functions, stored procedures, triggers, or external applications that insert rows into an eDOCS table that need a new ID, you need to verify that your code is not accessing the DOCS_UNIQUE_KEYS table directly to derive the new ID, but rather uses the sp_nextkey stored procedure. 

Here is an example on how to get the next SYSTEM_ID using sp_nextkey in a SQL Server 2005:

DECLARE @SystemID int
CREATE TABLE #KEY (NEWKEYCOL int)
/*
  … Your code
*/
DELETE #KEY
INSERT INTO #KEY(NEWKEYCOL) EXEC DOCSADM.SP_NEXTKEY ‘SYSTEMKEY’
SELECT @SystemID = (SELECT NEWKEYCOL FROM #KEY)
/*
  … Your code
*/
DROP TABLE #KEY

Autonomy/iManage Support for MS Office 2010

August 16, 2010 by Dave Kane

I’ve been talking with Autonomy/iManage technical support about MS Office 2010 since the beta was released last spring. It appears that Microsoft has changed things in a significant way from Office 2007. So much so, the integration modules Autonomy/iManage uses needed to be completely re-written.

This hasn’t been announced and isn’t official, but support for MS Office 2010 is expected in Autonomy/iManage WorkSite 8.5 SP2. The projection for that release is some time in November of this year. If you are looking at upgrading your office to MS Office 2010, adjust your schedules accordingly.

Older Autonomy/iManage updates no longer available

March 16, 2010 by Dave Kane

This is important information from the Autonomy/iManage WorkSite Support web site. Software updates, patches, service packs and basic installation files for older versions of WorkSite are no longer available. See their website for the “WorkSite Software Matrix”.

Certain components are still available and being supported. However, here is the important list of what has been pulled…

All versions of WorkSite Server 8.3 and older.
All versions of iManage MailSite 8.0 and older.
All versions of WorkSite Web 8.2 and older.
All versions of WorkSite Indexer 8.3.

The recommendation if you are having issues with older versions will be to upgrade your systems to version 8.4 or newer. Since version 8.4 was an interim version during the transition with Autonomy, I would highly recommend upgrading your systems to WorkSite 8.5.

This is an upgrade that you should plan for early. There are hardware and system architecture considerations that need to be taken into account with the new software. We are currently working with several of our clients, from small law firms with single server implementations to larger, corporate legal with multi-server, clustered configurations, in transitioning to WorkSite 8.5. If you would like assistance with any phase of your project, please feel free to contact us.

Software That Fails Reliably

December 18, 2009 by Bryce Ostenson

Let’s face it, software fails.  Failing can mean many things but most often it means that it’s unavailable completely or in part.  That’s not the sort of failure I’m discussing here.  At ADV, we often develop processes that move data around and typically that data is of very high value (medical records, corporate records pertaining to complex legal affair, long-term historical information).  Sometimes those processes are one-off conversions and sometimes they’re ongoing processes but regardless, we start with the assumption that the software will experience a failure.  If we’ve done our job well, that failure won’t be our failure but the result of an external factor such as a database server going offline for maintenance while we’re relying on it, a network connection failing, a power loss, or something similar.  My favorite example involved a wireless network link between two buildings (predating wifi) that was scrambling packets and, somehow, the whole stack of networking and operating system software and hardware that our application relied on to be reliable was not reporting the failure to our application.  I’m oh-so-glad the client’s networking staff discovered that and didn’t blame our software.

 Of course, we aren’t perfect either and our software has errors as well.  Such is the nature of developing software, particularly under tight budget constraints.  Thankfully, as important as some of our software is, we aren’t developing air traffic control software.  I’d love to spend time studying how they guarantee reliability but I’m not sure whether I’d like writing that software!

 Before continuing, let me clarify that while stability of software is very important, reliability is often more important.  For my purposes from here on, my assumption is that reliability does not include stability.  It’s very important that even very stable software fails and recovers reliably

 My first job involved working with financial aid applications and need analysis for private, largely parochial, high schools.  The databases at the time were flat files (DBF actually) where each file represented a single table of data.  Complicating matters was that an update might require updates to two tables.  If one table was updated but the other wasn’t, the data was inconsistent.  Today, this is easily avoided with SQL and a transaction but the environment I was working in didn’t allow for a transaction across multiple targets, even though the business requirements did.  The basic approach to solving the problem was to create a persistent (on disk) list of the steps that would be required to undo the transaction if it failed while it was in progress.  If, for example, the power went out, the application would initially look for this list and perform the recorded steps such that the system could be returned to a consistent status.  This might seem pretty arcane but it’s still relevant today, even while some systems provide very strong transactional reliability.  More on that in a moment…

What I’ve been surprised by is the number of developers I’ve worked with or whose work I’ve reviewed that have just never considered what happens when the unexpected does.  I think this is in part because systems do run so well in general or that the service that’s being provided can simply be retried by the user with no harm.  When you’re updating and moving critical data though, you just can’t assume that because it worked once or even 1 million times, that it won’t fail, or that reliable supporting systems will always be reliable.  Having just completed a small project requiring reliable failure, I thought I’d document a few of the techniques we use when software must fail reliably:

 Use reliable underlying technologies that do a good job of reporting errors. 

But, when it’s really important, don’t assume they do.  You can typically sacrifice some performance by building in a verification step after updating the data.  In my earlier example application with the failing wireless radio link, I added a step to reread the destination file to make sure that the file copy was truly successful.  Yes, the application was slower, but speed wasn’t a priority for it.

Check the errors from your underlying support systems.

I’m amazed how many tools go out the door that don’t check error codes or have generalized error handlers.  Sometimes you can cheat and just check the final result of a later operation but this is rarely safe in the long-run, particularly as the application evolves.  In may seem like overkill and bloat to check and handle errors but it is a necessity if the tool is doing anything non-trivial.

Compartmentalize the updating of data to as small a procedure as possible.

This may sound obvious but often the decision logic of what to update or how to update it becomes intertwined with the programming to perform the update.  If you separate the decision logic of what to update from the act of updating, your code to perform the update will typically be much more compact.  This has all sorts of side benefits: reusability, clarity, etc.

Define your transaction and rollback steps.

A transaction is a series of steps that must succeed or fail as a unit.  If your underlying subsystem can’t handle all aspects of your transaction (e.g. update a database table on server A, update a system via a web service, and write a change directly to a file), you will need to do so yourself.  Once you’ve defined the steps your transaction will need, ask yourself what will happen if the system fails (remember the power outage problem) on any single line of code until the transaction is complete.  Document what steps are required to roll the transaction back to the beginning (an undo) or what information is required to roll the transaction forward, completing it and then create a structure to store these steps.

I personally find it easiest if the rollback steps are very, very specific and don’t require the rollback code to include decision logic (E.g. action: Delete file, Parameter: file path).

Remember that the rollback infrastructure may itself be unstable.

Whether you’re writing your rollback instruction to a database table, a file, or somewhere else persistent, remember that these too can all fail.  This creates a complex question of whether you write the rollback instruction before executing the action or after and how to handle a failed write to the rollback list.  I don’t have a single approach to this as it’s usually been obvious to me in the given situation but if you study the field, I’m sure there are best practice design patterns.

Read the rollback file on application startup.

When the application starts up, I have it read the rollback file right after it verifies it meets all other basic requirements (E.g. database connections established, access to business system API’s confirmed, etc).  If there are rollback operations, they are executed to return the system to a clean state.  If it cannot be accomplished, the system shuts down again with an obvious message indicating that the system is inconsistent and likely requires manual intervention. 

I never provide an option to force the tool to run while the data is inconsistent.  Too many system administrators will try this and make recovery dramatically more difficult.

Test!

If you can interactively run the program, kill the application on each line of code within the update logic and test how the system recovers.  If you can’t run interactively, build in some debugging code where you can trigger an application exit after each line of code.  This could be a command line parameter that tells it where to immediately exit.  Repeat. 

It’s also helpful to have someone else review and test the code if at all possible.

Finally, randomly test failure.  I’ve randomly unplugged network cables, killed processes, stopped underlying systems, deleted and changed data out of sequence while the process was running, and created all manner of data issues.  Throw everything you can at making your application fail.  This doesn’t remove the need for the deliberate approach of testing but often uncovers errors in your testing.

Once you’ve done this time consuming task, consider this code locked down.  Any change to the updates code requires another time consuming and rigorous round of testing.

Log

Create a debug log for your application.  There are many high performance logging tools and the performance impact of leaving logging on is often much less than what you might expect (don’t forget to consider the privacy and security considerations of what you log though).  If you can, leave debug logging on even while the application is in production.  If there is a failure, this often provides the best clues for recovery.

If you’re using .Net, I’ll put out a recommendation for nLog: http://www.nlog-project.org/.  When I started working with .Net, I started using nLog.  I’ve been meaning to investigate whether new .Net versions have a better logger that I should evaluate.  In the meantime, nLog is fast, reliable, and extremely flexible right out of the box.  And has friendly licensing.

No one should really be writing their own logger anymore.  There are just so many high performance, flexible logging tools out there.

Backup

This should go without saying…  But in the event that something really bad happens, a backup, a log file, and any other inputs to the system that might be necessary for a redo of the updates can take you a long, long way.

If you’re dealing with life and death (or my bank account, etc), study this a lot more closely!

Whether you’re designing pacemakers, air traffic control, or banking software, I hope you take what I’ve written with a grain of salt and study the design of reliable software a lot more closely.  A quick web search will reveal a wealth of additional academic and practical research that’s well beyond my rambling blog.

/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/