New Partnership for Deltek Vision and Deltek Professional Services consulting

I am excited to announce the official launch of Version X Solutions!

Version X Solutions is a new partnership that brings together a combined 30 years of Deltek Vision knowledge and experience under one umbrella.

We offer a wide and practical range of products and services including custom modules, custom reports, and even a cloud hosting service.

We’ve put together the beginnings of an inventory, and will continue to add to it as we come up with new ideas and do more interesting work for clients. If you have an extension we need, we’d love to hear about it!

Of course we still offer hourly consulting for nebulous or “figure it out as we go” projects.

You can read more about us and our current offering here.

What does this mean for existing customers?

Our new partnership will not adversely affect the existing relationships I have built with you over the years.

You will continue to get the same great friendly, responsive and most importantly, knowledgeable consulting services you have come to rely on from me.

Thank you for your continued business and I look forward to working with you in the near future.

From now on, please refer to the Version X Solutions site for information about products and services offered.




Deltek Vision Adjust Salaried Job Cost – advanced module (upgraded)

I recently upgraded the ASJC Log, a report developed to go alongside the custom module built to replace the standard ASJC module in Deltek Vision.  If you’re not sure you completely understand ASJC, go ahead and read this article first: Old ASJC Article

Here is what often baffled me about the standard ASJC:
questions about ASJC

To learn more about my custom ASJC Module, which is basically a more advanced and robust version that does the same and more, and even better, read this article: Deltek Vision ASJC Module (custom)

Yesterday I upgraded the log report so you can see exactly which projects had their costs adjusted. In this example the employee names have been changed to protect sensitive data.  Here is a screenshot:
asjc log

Contact me to add this module to your implementation.



Ok I’ve made a lot of progress over the past two weeks. This is quite a complex project actually… but it’s about finished.

The final results look basically like this:

1. use SSIS (Sql Server Integration Services) to grab the csv files from designated directory and import them into a raw data table.

2. move any transactions from raw import data to the processing table… exclude any transactions that have already been imported.

3. using some data transformations in the form of user defined functions (UDF), make the data look like expense detail transactions

4. insert the expense detail transactions into the expense reports for the corresponding employees

5. allow employees to edit their expense transaction details in their pre-populated expense report

6. show the entirety of credit card expense transactions in a report… that shows the imported data, next to the matching expense detail records in Vision, allowing employees to accurately fill out details on their expenses, and make sure that everything has been accounted for.

7. for the payment to the credit card company, assign the cash disbursement to the different project, phase and tasks reflected in the expense detail transactions so that projects show the cash out for those expenses.

So I’ve completed everything except step 7, which I will complete over the next day or two.

Some really cool things this does:
– puts the CSV files in an archive folder and assigns a unique, logical name to them so you don’t have to worry about losing raw data history

– allows you to compare imported data from the CSV file to the actual data in expense reports by employee and expense report

– allows you to trace any imported transaction back to the actual CSV file it came from… it shows you the file name on the report

– reconciles the amounts imported vs. the amounts in the employee’s expense report so you can make sure you didn’t miss anything

– shows data that was imported into the processing section, but didn’t actually make it into an employee expense report

In a couple weeks I will provide more details on how it actually works with some screen shots of the results.

In the mean time, here is a snapshot of the entire process looked up wrapped up in an elegant diagram in SSIS. Of course, this doesn’t show any details or code… just the big picture logic of it. It’s interesting all the same.

Have an excellent day!

I’ll be at Deltek Insight in a couple weeks, and will be teaching a break out session:
PS-80 Putting Data in the Right Place

If you happen to be at Insight feel free to come say “hello” and give me some feedback on my blog!


Credit Card Transaction Import Automation – Part 1

I have this great client (Champion Technologies out of Baton Rouge, LA) giving me some very interesting projects lately. They are in the business of automation, and have recently asked me to automate their credit card transaction import process.

This will be a multi-part blog entry describing the process we go through in automation process.


Initial conversation:
We had an extended gotomeeting (90 minutes) to talk about what needed to be done for this project. Since the client had already built a partially automated solution for this using a combination of excel spreadsheets (we love those don’t we?), macros, and some concatenated sql statements in text files… he had a pretty good idea of the requirements for the process. He walked me through the basics of what is already being done.

The first thing I do when attacking a project like this is go back through the recorded gotomeeting and take notes. Here are some of the notes I’ve taken:

Big Picture Requirement:
1. accounting user downloads a csv file from the credit card company and puts it in a designated folder somewhere on the internal network

2. accounting user clicks some kind of button (custom info centers will come in handy for this one!)

3. the process sucks up the file and imports it into Vision employee expense reports, exposing those reports to employees as “in progress” so they can go in and fill in the details on each transaction

4. once completed (the details are filled in) a report will be run to make sure that all transactions in the csv file(s) have been imported and have details added to them. Once all transactions are ready, the expense reports can be submitted and posted.

5. when the credit card bill is paid by the company, the automated entries by Vision for the payment are removed, and replaced by a detailed set of transactions that go down to the individual project level, possibly transaction level. This will show cash outflows by project for those expenses.

Some of the implied and explicit “gotcha” requirements:
– if a user imports a csv file twice, make sure that those transactions are not duplicated
– if a user imports once single transaction twice, make sure it’s not duplicated
– if a user splits an expense entry into two so they can share it between two or more projects… make sure the reconcile still works
– what happens if the accounting department un-posts the individual expense transactions? do they unpost the payments as well?

— end —


Case Study – Vision Implementation Restructure

Ronald Lu & Partners, HK had implemented Deltek Vision 5.1 in 2008 and had been live for 2 years.

I received an email from the founder’s son, Bryant Lu saying that although they had been live for 2 years, their accounting department was still doing a lot of accounting and reporting on spread sheets. After I spent a week in their offices I found the following major issues that needed correcting:

0. They needed to convert from Vision 5 to 6, which we accomplished in 2 weeks.

1. Their work break down structure for every project was the same, displaying the 8 standardized phases of a project that they took each project through, but not reflecting the actual milestones and deliverables of the project.  Thus, they were unable to produce meaningful reports from Vision that could show budget vs. actuals, expected revenues or EAC reports tied to project milestones.  Instead, they were maintaining a completely separate set of financials outside of Vision on an organized but extensive set of Excel spreadsheets so they could track consultant expenses, milestones, invoices, and receivables.

2. Their entire set of P+L statements and Project Earnings reports were being produced from spreadsheets in order to show P+L across companies or divisions. The reason for this was because after going live they had adopted a new organizational structure which consisted of studios (which is common in architectural firms).  Because the studios were not represented in the data in Vision, it was not possible to produce any reports based upon studio from the application.  This affected all of their performance reporting and financial reporting.

Just tackling these two issues implied that I would have to do the following:

1. Restructure the work break down structure (WBS) for every project in the database to reflect true milestones and deliverables (or start over from scratch with a new database and a new go live date, which would mean re-importing historical data… essentially doing their implementation completely over).

2. Either convert their current organization scheme to one that considered the studios, or find some way to generate their entire financial report set using a custom field in the project infocenter which would reflect the studio a project was assigned to.
While the problems and solutions described above are only numbered 1 and 2, there are many implied requirements that would come into play as I executed this project over the next 4 months.  Some of the issues I encountered and resolved were:

– In Deltek Vision, when you key convert a WBS item like a phase or task to move it to another project, phase or task (not merely changing the number), it completely ignores the invoice history data during the key conversion process.  Since we decided we would key convert every project into a new, meaningful work breakdown structure, this meant that I had to write sql scripts to convert the invoice history as well.

– The projects that RLP undertakes can last many years, and often have over 100 phases and tasks. The interface for Deltek Vision does not yet allow a user to update fee or budget amounts in a grid like format that shows the entire project structure.  During the execution of this project I built a Microsoft Access based application they could use for both data entry for the conversion (to enter the WBS for projects into Vision) and to use after the conversion for adjusting fees and budgets for projects, as well as enter fees and budgets for new projects.

– Since it was decided not to restructure their organizational scheme in Vision (this was a management decision) it was necessary to develop custom reports to satisfy their entire financial reporting set.  This included P+L reports, balance sheet reports and forecasting reports.

– Because of the language barriers (Vision is not yet localized in Cantonese, the Hong Kong version of Chinese), it was decided we would not implement Resource Planning.  Also, some projects could actually commence and continue in execution for months before actually becoming a signed project.  Thus, it was necessary to in a sense “bill time to opportunities”.  So instead we came up with a solution for revenue and opportunity forecasting using the project info center only.

There were of course many more issues that we worked through and solved throughout the course of the project.  Bottom line is that we completed and went live with the new project structure and report set by December of that year.  Working on site, together with their executive and accounting departments we were able to complete 6 to 8 months of work in 5 months.  

Here are some example images and reports from after their implementation:

Click for full size.

This shows the mission critical business path, order of priority for phased restructure, area of effort and timeline for the phased restructuring of their Vision implementation.
(I will be adding to this case study with more images and samples… later this week)

In Hong Kong at the moment

So it’s been a month since my last post.

I’m in Hong Kong servicing yet another non-standard implementation for an A & E firm.

I just finished troubleshooting a very annoying issue with converting them from Vision 5.1 to Vision 6.1 (SP3).

The first issue was that the setup couldn’t load the reports properly, neither could the service pack.  So… I reloaded the reports from Report Administration… took a few tries to get this right, adjusting roles in the ReportServer management interface as well as making sure the DeltekVision logon had proper access rights to the servers etc.

Then… I was able to load reports, but kept getting the 401 Unauthorized error when trying to preview them… I have worked literally 2 days on this issue.

Here is the error that kept coming up:



The request failed with HTTP status 401: Unauthorized.

Call Stack: 
Deltek.Framework.Report.Client.BaseReportViewerControl.RefreshAfterBuild(returnObj As ReturnObject)
Microsoft.Reporting.WinForms.ReportViewer.set_Messages(value As IReportViewerMessages)
Microsoft.Reporting.WinForms.RSParams.EnsureParamsLoaded(forceCredentialsShown As Boolean, parameterInfos As ReportParameterInfoCollection)
Microsoft.Reporting.WinForms.RSParams.GetDataSources(allSatisfied As Boolean&) As ReportDataSourceInfoCollection
Microsoft.Reporting.WinForms.ServerReport.GetDataSources(allCredentialsSet As Boolean&) As ReportDataSourceInfoCollection
Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.LoadReport(Report As String, HistoryID As String) As ExecutionInfo
Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.IsSecureMethod(methodname As String) As Boolean
Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.GetSecureMethods() As String[]


The problem?  The problem is that I was running Vision 6.1 on MY LAPTOP… meaning, I was logging into the app from my personal laptop… which is NOT a part of my client’s domain.
I had not set up a reverse proxy for the Vision implementation because all of the access is through a VPN for security reasons… however my laptop is neither accessing through VPN nor on the domain… thus I was getting this error.
Solution?  Try logging on to Vision 6.1 from a machine on the domain and Voila!  Success!
Since it’s Saturday, now I can take the rest of the day off!
(p.s. if you’re interested in having me work on your non standard Vision implementation, please contact me in December of 2010.  I will most likely be in Hong Kong until then)