Ajaxplorer

### Note: I originally wrote this in 2012, but never published it. I haven’t looked at Ajaxplorer since then for many un-related reasons, but thought I would post it as-is in case it helps someone ###

 

I recently decided to test Ajaxplorer as an FTP replacement. Right now FTP is used for simple file transfers and data uploads, but its not secure, and its not the most user friendly way of transferring files.

Ajaxplorer is attractive because it’s a PHP front end for file transfers with a Windows Explorer-like interface. It can be secured with SSL and offers many other nice features.

I wanted to set up an instance of Ajaxplorer on a spare VM which didn’t have very much storage space. With the help of a forum topic on the Ajaxplorer forums, I managed to set this up with the actual data repositories on a different UNC path.

 

Copy to c on Web server
Create sym link to storage server with Mklink /d
Copy data folder to storage instead of Web
Add URL rewrite module to iis
Add info to Web.config for redirect to https
Add certificate to iis
Modify php.ini with file size and mail smtp options
Modify the boot strap plugin file for ldap authentication plus serial
Add repository for crew ftp
Email: – have master user QCdata, click on individual folder, share it out with the named user, choose read and write, set email address.

DPM syncronization failure on Secondary Server

I now have an environment of Microsoft Data Protection Manager 2012 R2 set up as a replacement for Backup Exec 2010.

Despite the lack of some features, it has been performing quite well. However I recently started receiving email notification of errors and it relates to my secondary DPM server.

The primary DPM server exists in the head office, and provides back up of Hyper-V VMs from my main cluster. The secondary DPM server exists in a branch office 300KM away and provides back up of the primary DPM server.

 

I started receiving errors like the following from the Secondary server to individual resources on the primary:

Synchronization for replica of \Online\servername(servername.clustername) on PrimaryDPM failed because the replica is not in a valid state or is in an inactive state. (ID 30300 Details: VssError:The writer experienced a non-transient error.  If the backup process is retried,
the error is likely to reoccur.
 (0x800423F4))

 

Every time I tried to perform a consistency check on these resources, it would begin and then end within 30 seconds.

To be honest I didn’t have a lot of time to troubleshoot this one. I tried restarting both DPM servers as well as the Hyper-V host and VM itself, and none of that seemed to have an impact.

At some point I noticed that the resources giving the errors on the Secondary server hadn’t had a recovery point on the Primary server in quite some time.

I forced an Express Full Backup of the VMs on the Primary server and allowed it to complete (successfully). I then initiated a consistency check on the Secondary server protected resources, and it too completed successfully!
Where I’m still confused is why didn’t I receive alerts from my Primary DPM server that recovery points were being missed?

Autodesk 2014 deployment

One of the other major deployments I’ve done recently has been a refresh of all our Autodesk products to the 2014 version. In scope this was smaller than my Office 2013 deployment, however it was much more complicated.

 

First, I created Active Directory groups to contain the computer accounts of workstations needing a product. For example, a group for AutoCAD 2014 Network license containing computer accounts that required it for installation.

These groups were then targeted with Group Policy Objects which set a scheduled task to run the installation script at 3:00am. Due to the size of the installation, I don’t want to have this run as a startup script.
Next I needed to create the installation script.

To start, I created an Autodesk deployment through Setup.exe. This is typically how standardized installations of Autodesk products are performed, but usually aren’t enough to have a user fully set up.

I began with a deployment of Infrastructure Design Suite Premium (IDSP) since it was 40GB and contained the install files for every ‘lower-tier’ product we were going to install. This way you can use a single source of installation files but multiple configured deployments.

Once the deployment package was created, I put it into a VBS script with a WHOLE lot of other logic.

My installation script can be downloaded here: AutoCAD_2014_Network_Install(rename to .vbs)

The Uninstall Products script can be downloaded here: UninstallProducts(rename to .vbs)

The Copy Fonts script can be downloaded here: CopyFonts(rename to .vbs)

 

The script can be summarized as follows:

  • Check default gateway on the NIC, and if matching branch offices change the install source
  • Check for the acad.exe file in the installation directory, and proceed if it doesn’t exist yet
  • Run the UninstallProducts script to remove previous versions of software
  • Run the Autodesk deployment through the .lnk file created from Autodesk setup.exe
  • Begin a loop which checks for setup.exe in the running processes.
    • Wait 2 minutes before proceeding with the loop
  • Once setup.exe is no longer running, continue by deleting unnecessary shortcuts
  • Add extra shortcuts that point to a specific ARG file for customizations
  • Install additional programs (AcroPlot PDF software in this case)
  • Run the CopyFonts script, passing in the Fonts path for this particular product
    • This copies required fonts to C:\Windows\Fonts and the installation directory
  • Check again for acad.exe, and if it now exists then log success, otherwise log failure.

 

 

 

Office 2013 Deployment

office_logoMy company is now utilizing Office 365 for it’s email and Office products, and for a variety of reasons there was a need to mass upgrade to Office 2013.

Our parent company from a recent acquisition handles it’s deployment in a way that doesn’t meet our requirements, since it is user-based rather than computer based which we require.

 

There were a few things we had to define for this to be a successful project:

  • Installation must run under admin privileges (which our users do not have)
  • Ideally, installation should not interrupt or delay a user, but if necessary it is acceptable
  • Install source should be dynamic to allow for different branch locations
  • Success or failure should be logged to a central file

 

Based on the above, I came up with a combination of scripts which are reproduced below.

Overall the project was a success, with the only major issue being users not reading instructions (even openly admitting this fact) which caused a huge increase in IT Support requests.

 

1. Group Policy Objects

I set up two GPO’s to perform two separate functions:

  • One to create a Scheduled Task that runs once at 3:00am, executing the install script
  • One to execute the install script as a Startup Script under the Computer Configuration settings for all workstations in our area of AD

Using this method, any computer powered on at deployment date would receive Office 2013 at 3:00am without user interruption, and any other computer after that would receive it at startup. The majority of our staff working in an office were not interrupted, and our field staff would all receive the software eventually.

 

2. Installation Script

My commented installation script can be downloaded here: Office2013InstallStatus (rename to .bat)

In essence, here is what it does:

  • Begin by defining location variables that will apply to all PCs by default
  • Check matching NIC gateway addresses for offices without an Apps repository and overwrite the location variables if necessary
    • This will ensure that all installation files come from a local source
    • Note that the LogFile variable is not changed; central to all installations
  • Next a check occurs for Office 2013 installation
    • If this returns true, the script will exit without further action
  • If Office 2013 isn’t already installed, installation will begin
    • First write a registry entry on the PC which can be referenced by the Install Status Script (see below) if the user happens to log on during installation
    • Uninstall Office 2010 (a straight upgrade has been known to cause problems)
    • Uninstall Office 2013 (this will apply to PCs which had ONLY Lync installed)
    • Install Office 2013
    • Write result to a Log File
    • Reset the registry entry of installation status to signify end of installation
    • Exit script

 

3. Install Status Script

Because many of our installations would take place at computer Startup (the second GPO) and it would be possible for users to log onto the computer before the installation is completed (because Windows 7 doesn’t run startup scripts synchronously), I needed a way to tell the user not to open Office products while the installation was running.

My status script can be downloaded here: Office2013StartupScript (rename to .vbs)

This script is placed within all users Startup folder in the start menu, and performs the following:

  • Read the InstallingStatus value from the registry which would be set by the Office2013StartupScript.bat script
  • If the Status = 0, exit the script. If it = 1, begin a Do loop
  • While in the loop, check for the status of the registry key again
    • If Status = 1, display the HTA application. This has a timeout of 5 minutes, after which the loop will resume
    • If Status = 0, the loop ends and a final message is displayed to the user

One problem we did encounter (which isn’t really resolved yet) is that occasionally the Office 2013 installer would auto-reboot. When this occurred, it interrupted this status script, causing the “installingStatus” flag to remain active. On the next reboot, the Status window would re-appear even though no installation was taking place.

 

4. Install Status Window (HTA)

The HTA file I’m using to display to the user, called from the Status Script, can be downloaded here: Office2013_message(rename to .hta)

 

 

 

Intelex Introduction

Intelex is a process-management platform primarily used for Quality, Safety and Environmental management. It targets those companies who are ISO compliant in those areas, and provides a digital method for form and process tracking.

In August 2012 my company rolled out Intelex for Quality and Safety management as we are ISO9002 certified, and I was heavily involved in it’s implementation.

I’m using this as an introduction post as I’ve found that there really isn’t much information on the product, despite it having quite a large customer base. There are a few things I’ve discovered along the way which are worth sharing so more posts more will be coming in the future.

 

As a product Intelex is fairly good at what it does. At the moment my primary 3 uses of the software are for Quality non-conformance tracking, Safety Incident tracking, and training requirements registration and tracking.

One of the benefits of Intelex is its ability to assign tasks to employees which specific targets and due dates. This ensures that processes which are important to the business don’t get dropped. Excuses like, “I forgot about that” or “I didn’t know that was my task” are no longer valid as those things are tracked.

Currently there are 2 versions of Intelex in production: v5 and v6. While they operate in a similar manner, they are very different products. v5 is much more of a “closed box”, where you do have some customizability but you will quickly run into constraints. There is a distinct lack of continuity between modules, where certain things work in one but not the other. Even options across the modules are drastically different for no apparent reason.

v6 is much more of a consistent platform, due in part to the modular nature of its Applications. Each “module” (from v5 terminology) is now an application, made up of objects (tables in a database) and fields (columns). Every object can have multiple workflows which all you to define stages of process for a record on each object. It’s hard to describe how this all fits together with just text but it does work quite well.

With v6 you have a large amount of customizability, both over how the application operates as well as how it looks. You can define business rules and actions for records in the objects, and have much more granular control over security as well.

That’s not to say that v6 doesn’t have it’s issues as well. v5 modules can run within the v6 platform, but they don’t integrate very well when it comes to consistent behavior and accessibility. Not all area’s of the platform’s framework have been upgraded, leading to poor improvements to toolbars, dashboards and reports.

I’ve just finished up designing a Career Development Plan application for my company to use and while it took a large amount of work, it works very well and I’m pleased with how much Intelex can help in a workflow driven process like this.

If you’re an Intelex user or prospective customer and have any questions surrounding it, ask away and I’ll my best to answer.