When I have conversations around change and innovation one of the most common objections I hear is “we’ve always done it this way”.  It is one of the most dangerous phrases when it comes to business and I work hard to ensure that the businesses and individuals I deal with understand both the tangible and intangible reasons for change. Often I break up these reasons to three categories that all ultimately result in the same thing; change for the greater good. And of course, simple to adapt and adopt solutions also help with this cause. This is why we developed DocAssist as a “solution for the people” and not just for those who code their days away…

Keeping up with technology

While it’s true that “if it ain’t broke, don’t fix it”, this reductionist point of view no longer rings true with most businesses. Technology is developing rapidly and the longer businesses leave their technology upgrades, the harder it becomes to ever make that leap. If you’re business hasn’t digitalised its processes not only are you missing out on amazing new technologies such as AI and data analytics, but you are also putting your business data at risk.

A simple example of this is a personal experience I had a number of years ago. The small town I was living in at the time suffered a great flood where almost every business on the main strip was submerged for 2 days. While most of the physical damage done to the businesses was covered under insurance, a number of businesses including the local optometrist lost all of their client related data which was still maintained manually on pen and paper.

Drying patient files… The simple act of creating a digital database and storing data off-site could have easily protected the decades old patient files.

How can DocAssist Assist: DocAssist’s writeback feature can help you retain important data in its own database, so you can not only use the data again and again but you can also report on it. DocAssist also integrates seamlessly with other solutions (such as a PMS or
CRM), creating a secondary repository of contact and other client related data.

Keeping up with the changing workforce

It’s been cited in numerous research articles that the new generation of workforce value their time, space and flexible working conditions. Chaining them to a desk is not going to create a productive GenY/Z, and an unproductive workforce is not profitable. Businesses are responsible for creating an environment where their employees are able to perform their duties in physical and mental comfort.

How can DocAssist Assist: As a business tool DocAssist provides users with flexibility to change their documents and collaborate with colleagues as required. Unlike other document automation solutions you are not “stuck” with your answers, you can come back and change your options as required and see your document evolve in real time. It’s interactive nature means you won’t need to complete an entire interview
form to see the changes in your document. It all happens IRL!

For those working on the go, DocAssist also offers an off-line database, which means you can continue to access your clients, matters and contacts even if you’re not “on-site”.

Keeping up with changing customer expectations

The driver behind changing business environment is often changing client expectations. Clients are increasingly expecting to have control over their data. And like internal teams, they expect to collaborate with their lawyers when it comes to drafting documents. While digitalisation of data collection and document drafting solutions has somewhat eased this process (for both clients and lawyers), issues such as data integrity and security are still on the top of everyone’s list of concerns.

How can DocAssist Assist: In the simplest terms, a draft DocAssist document can be shared with the client in any secure means necessary for review. Because DocAssist’s main data entry and collection functionality relies on content controls, third-parties can be given some access to complete missing information on the document using only Microsoft Word. This data can even be written back to the DocAssist database once the document is received back from the client.

Additionally, data collected from client portals can also be integrated into the DocAssist database for use in the automation process.

What is your firm doing to adapt to new and emerging technologies?

Janders Dean makes up an important part of the legal technology and innovation ecosystem in Australia and overseas, and #JDHorizons is a date that most inhabitants of this ecosystem save in their calendar well  in advance year after year.

This was the second time we were invited to sponsor #JDHorizons in Sydney. We were blessed with two days of Spring in the middle of Winter with marvellous views of Sydney Harbour, accompanied by a carefully curated program of speakers.

What we liked about the Conference
  • Curated speakers
  • Promotion of diversity
  • Large number of female speakers
  • SheBreaksTheLaw launch
  • Cocktails at 10am doesn’t hurt anyone except your brain
  • Fantastic opportunity for up and coming university students
Why we’ll be back
  • We like the delegates – a great mix of people with common industry, innovation and a collaborative mindset
  • It’s fun and relaxed
  • The topics are relevant, not just to Delegates but to Sponsors too
  • The values of the conference align with outs (diversity, inclusion, wellbeing)

We are very proud to be sponsoring ALTACon today.  Our very own Chris Painter will be presenting his member story which promises to be very entertaining and have you journeying back to the 80s with him #backtothefuture #martymcfly.

Please drop by our booth to say hi to Wendy Dias and Chris and discuss all things document drafting.

https://www.altacon.com.au

It’s nearly that time of year again for the Thomson Reuters Elite VANTAGE conference.  Held on 10-11 October in Sydney, MOSMAR are again silver sponsors and promise to captivate you all at our session on MatterSphere workflows. As always, we will provide a sugar hit to keep you awake and enthralled.

There is always much to learn at VANTAGE while having a great catchup with friends and colleagues in the industry.

Be sure to register, and see you there!

http://www.elite.com/exchange/vantage/auc17/regional-conference/

A new feature in DocAssist as of build 1094 is “Clippings”. We like to think of clippings as an easier and more versatile version of autotexts or building blocks. As you probably know, autotexts and building blocks can only be saved to templates, there’s not many options for organising them, sharing is a pain, and updating them is even more painful.

So what are Clippings. Well they are really just documents that can be inserted in to another document. Not hugely exciting until you see how they can be used.

First of all you need to configure the locations for the clippings. You can have up to 3 locations currently. We recommend Personal, just for you, Shared for your department or practise group, and Precedents for firm or company wide clippings. The locations can be on a network or local – whatever works best for you.

If you have DocAssist build 1094 or newer, you will see the configuration settings within the Settings.xml file.

Now create some clippings. In a Word document, highlight some text you want to reuse as a clipping. Then press Shift Alt S (the shortcut we usually setup – or run the SaveClipping macro) and you will get the following screen.

Save Clipping screen

Select a location to save to, and then select a folder. You can also right click to create your own folders, or rename existing ones.

Give your clipping a name, and also an optional code, and hit save.

What’s the code for…that’s the fun part. Create a new document in Word, and then type in the code and press F3 (or run the InsertClipping macro) DocAssist will find the clipping and insert it in your documents – just like an autotext/building block.

And for those clippings you don’t have a code for, or you forget the code, you can browse all of the clippings that are available just by clicking on the Clippings button on the ribbon.

Browsing for clippings

So now you have a simple way to save your own autotexts, or share them with your department or entire company or firm. You can create a standard set of codes to have them easily and quickly inserted in to documents. Plus you can create your own taxonomy for sorting your clippings.

And to top it off, you can even create shortcuts to specific folders within your clippings. So you can have options on the ribbon to say insert an execution clause, or insert an address, and it will bring up a list of all clippings from that location.

This is a very simple yet powerful feature and has received great feedback so far, so make sure you give it a go. It’s all now part of DocAssist.

Have you ever tried to open a .CHM file in Windows, and it shows the index but no content? Not exactly HELPful. It had me stumped when checking out the NetDocuments ndOffice extensibility documentation.

Well it turns out to be such a simple fix. Right click on the .CHM file, select Properties, then select Unblock.

Too easy.

I’ve been having an extremely strange issue with a custom application. Basically the application is a form that displays to the user so they can select some options relating to how they want to print a document in Word. The form then goes off and does a few things with the printer driver and prints the document as required.

For some strange reason the form started playing up recently, and users were reporting that it was locking up sometimes, and the only way you could close it was to end the WinWord process in Task Manager which is a little drastic!

With a bit of debugging (and luckily being able to replicate the issue) I found the problem code was calling the DocumentPropertiesA function from winspool.drv. This was the part of the code that was updating the printer driver with the new settings. All of a sudden the call was not returning in some instances, but in a strange twist execution was returned to the form. No exception was returned. I enabled all the controls on the form to test further, and it turns out the form was indeed active again, and the buttons would work, but you could not close the form.

A bit of research reveals you cannot close a form if there is another event still running. So I guess the code running on the OK button event was considered to be still running.

If I clicked on the OK button again, the same code would run, but at the same line of troublesome code would actually return an AccessViolationException error, and you could not continue the code.

So a bit more research and yes, AccessViolationException is bad, and your code should stop.

But here’s where it gets interesting. In versions of .Net 3.5 and earlier, an AccessViolationException would get passed back to the CLR and you could trap it. As of version 4 it does not. Well thanks for that Microsoft. You can read all about it here. That was like trying to find a needle in a haystack.

Turns out the fix is pretty simple. In the class that was running, I added the following imports statement

Imports System.Runtime.ExceptionServices

Then on the actual sub that was running, I added the following attribute

<HandleProcessCorruptedStateExceptions()>
Public Sub Update()

And voila, the TRY CATCH around the problem line picks up the exception.

I can now catch the problem. Turns out it’s not fatal in this case, and the code can keep running, and even more strangely, it works. I suspect there is still another problem that needs a little more investigation, but I’m now back to a print dialog form that appears to work the same as before which no longer locks up. So happy users, and happy developer.

If you feel like reading more on exceptions, then here’s a little more light reading that you may find interesting, I know I did. http://msdn.microsoft.com/en-us/magazine/dd419661.aspx#id0070035

It all became a reality when I right-clicked on my solution to add a new project. I thought I had made a mistake. How couldn’t I add a simple setup project after writing all that code? After a minute or two of intense (!) research, I received my answer:

“Visual Studio setup projects (vdproj) will not ship with future versions of VS.”

Like the rest of the world, my heart was broken. It took me countless hours to figure out how to use the broken setup project technology, what was I going to do now? [1]

I overheard Pratik and Chris talking about the WiX installer as an alternative to deploy a product. All I thought was, how hard could it be? Shouldn’t be a problem. Thanks to Pratik and an entire work day, I found that the learning curve for WiX is quite steep even though it is more powerful than what the setup projects offer. Only when you figure out how to use it. The same can definitely be said about InstallShield, you can ask Pratik.

Today when my job sheet said ‘compile when these changes are made’, it got me slightly worried because I haven’t worked with WiX or InstallShield before. I wasn’t ready for a day of studying how to deploy the project I have been working on for a week for one client. With the tiniest bit of hope, I googled how to setup project in Visual Studio. It was one of those Hail Mary moments with no hope until I saw this gem:

http://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

In April 2014, Microsoft caved and released a free official extension to Visual Studio 2013 that allows you to create installer projects. It is exactly the same as the installer project types in VS 2010[2] except for some minor bug fixes. All you have to do is download the extension from the abovementioned link or simply search “Microsoft Visual Studio Installer Projects” on the internet[3]. When your VS restarts (you have to close and reopen it) you will have setup wizard and project types just like you could before.

Voilà!

Mutu


[1] The famous Visual Studio user request that has been up voted more than 6,000 times can be found at https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3041773-bring-back-the-basic-setup-and-deployment-project?page=40&per_page=20

[2] This is a good source to compare the 3 different installer deployment tool that Microsoft offers. http://msdn.microsoft.com/en-us/library/ee721500(v=vs.100).aspx

[3] Alternatively, you can use the Extensions and Updates dialog as well.

Sometimes you need to add a slight pause in your VBA code to make things work properly. Here’s a few ways to do just that.

Firstly, using the Timer function. This is what I use most of the time, it’s great if you need to wait a specific amount of time.

Sub Wait(ByVal Seconds As Single)
    Dim CurrentTimer As Variant
    CurrentTimer = Timer
    Do While Timer < CurrentTimer + Seconds
    Loop
End Sub

With this routine you can also pause for parts of a second by using

Wait 0.5

The most common method I find in code is just using a For loop with nothing in it. Change the value of the loop in order to vary the time of the pause.

Dim i as integer
For i = 1 to 1000
Next i

The problem is you don’t know exactly how long it will pause for, and it will vary from computer to computer. It’s not an exact science, but it often solves the problem, and hence why I see it around so much.

Another method is to use the Sleep function that is part of the Windows API

Declare Sub Sleep Lib “kernel32” Alias “Sleep” (ByVal dwMilliseconds As Long)

Sub Wait(ByVal Milliseconds as Long)
   Sleep Milliseconds
End Sub

This method is good as it’s accurate down to the millisecond.

And lastly a method that is a little different to those above as it doesn’t pause your code but instead triggers code to run at a particular time. With this method the rest of your code after the call will continue to run, or if it’s at the end of your routine, then control will pass back to Word while waiting for your code to run.

Application.OnTime Now + TimeValue(“00:00:05”), “NameOfMacroToRun

Just change the “NameOfMacroToRun” to (you guessed it) the name of the macro you want to trigger, and it will run in 5 seconds time. The cool trick you can do with this is use it to run code at a constant interval while Word is running just by getting the macro to call itself again. For example:

Sub CheckSettings
   ‘ Do whatever you need to do…
   If Application.UserInitials <> “cp” then Application.UserInitials = “cp”
   If Application.UserName <> “Mosmar” then Application.UserName = “Mosmar”
   ‘ Run again in 10 seconds time
   Application.OnTime Now + TimeValue(“00:00:10”), “CheckSettings”
End Sub

Whilst this is probably a bad example, you get the idea. Whilst Word has plenty of events you can hook into, there’s lots that don’t exist (like selection change within content controls). By using the above you can replicate the functionality of events and create your own in VBA. Maybe I’ll save that for another blog post.

There are other ways to achieve a pause in your VBA code, but they are generally variations of the above so I won’t cover those. That’s what the rest of the internet is for.

© Copyright - Mosmar