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.




The “next” version of Deltek Vision – Deltek Professional Services

There has been a lot of discussion lately around the current iAccess platform and Deltek’s new offering coming up titled “Deltek Professional Services” or DPS. Some of that discussion has been concern about what will or not be available in the new platform, what will need to be upgraded or dropped entirely, and if the platform will be “better” than the current Vision 7.6 (Deltek’s latest and apparently last version).

Deltek Professional Services is the “next major upgrade” for Deltek Vision. That means in the next 5 years, you will need to upgrade if you want to continue getting official support for your ERP platform.

I attended a webinar yesterday with many of the same questions you probably have and came away with these important answers to my questions:

Question: What is DPS generally? Is it just a Vision 8.0, or is it iAccess or what?
Answer1: DPS is a much needed overhaul of some features of Vision, while preserving many core back office functionality. From what I saw, there is a major focus on re-imagining and re-designing most front office user experiences and ways of managing information. From what I gather, “front office” users are all the people not in the accounting department.  Keep in mind that for the longest time, Vision’s strongest functional set has been in accounting. Now the focus is on better crm, project management and executive tools.
Answer 2: DPS also brings us browser agnostic functionality. I’m pretty sure this means you can use it on a Mac OS based device as well. This is great news for your marketing and design teams who tend to prefer Mac based products.

Question: Do we HAVE to move to the cloud? Can we still have an on premise version? This question is especially important for large firms with lots of integrations with other systems and customizations of Deltek Vision.
Answer: NO you don’t have to move to the cloud. An on premise version will be made available later in 2018

Question: What about all the money we’ve invested in custom reports, workflows, user defined infocenters and other components? Will we be required to re-write all the SSRS reports we have like when Vision reporting moved from Actuate to SSRS? (remember that? yuck!)
Answer: All your customizations (I read that as “most”) will port over just fine. From what I can tell, the things that will suffer or have to be replaced entirely are any cubes-based functionality, heavy outlook integrations, proposals and the VPM module. At least that’s for version 1.0 (yes, they’re starting new versioning since it’s been renamed).  I can’t say what’ exactly will happen with later versions.

Question: What if we are already on the cloud version (hosted by Deltek)? What will happen and when?
Answer: According to Deltek, “All Vision cloud customers will get DPS as a part of their annual subscription.”
I read this as – you’re going to get migrated to DPS whether you like it or not if you’re on Deltek’s cloud version.  It’s just a matter of when. This is one of the reasons I advise my customers against moving to Deltek’s cloud provided version.  If you are tired of maintaining servers and a staff to maintain Vision (especially smaller firms), stay tuned for an alternative cloud offering coming up next week that allows you control, access to the database, and no forcing of upgrades or major changes to your current licensing agreement.

Question: What should we be doing to prepare our firm for this upgrade?
Answer: According to Deltek you should be doing the following:
1. Check out the DPS portal (you should have received a link to it in an email if you’re a customer who’s kept up with licensing and maintenance fees)
2. Deploy and get used to iAccess (it’s free with all versions 7.X)
3. If you are in the cloud, request a preview (testing) environment.
4. Call me for help. No, of course they didn’t say that, but if you’re looking for an independent expert without obligation to sell you stuff, then you should.

Questions: Why does Deltek want us to move to their cloud offering so bad?
Answer: Call me for a frank discussion on this.
(contact page here)


Credit card transaction import module finished

I have been remiss on posting to my site/blog. I have been swamped, buried in work.

The credit card import module has been completed and running now for 1 week in a production environment with no bugs yet.

Here are the basic functions of the module..

1. User downloads credit card transaction detail from Chase as a CSV file, then drops file into designated directory. User can name file whatever they want.

2. Module imports csv data, archives file and renames it. All imported data is linked back to that specific file so user can look up individual transactions with ease, all the way back to original csv data. If user imports the same file several times or if there are duplicate transactions the process cleans it up.

3. Module processes imported transactions into employee expense reports, adding transactions to appropriate open expense report or creating a new one if needed. Transactions will be added to either the appropriate report based on transaction date, or in current expense report if the appropriate one has been submitted.

4. Employees open their automagically created expense reports and add project number information as well as account for each detail, adding descriptions if needed.

5. User runs a report which shows any import errors, employee expense entry errors or missed imported transactions.

6. When expense reports have been completed, they are posted using normal Vision procedures.

7. When a payment is made to the credit card company, user locates payment serial number in imported data (all transactions are imported, even chargebacks and payments) and processes that payment using a workflow. The workflow creates journal entry files to allocate the cash effect to all projects based upon which details were paid by that payment, and where the employees assigned them. This shows cash flow on a per project basis when that credit card payment is made.

8. Journal entry file can then be posted through normal Vision procedures.

If you would like more information about this module please contact me.

Vision 7.0 and custom Infocenters – Finally!

Good morning, afternoon and thank you for visiting my site!

I have been working on the Deltek Vision platform for about 9 years now.  My first experience was a from scratch phased implementation (read more about what that means here) for a firm in Southern California.

The reason we had decided to purchase and implement Deltek Vision was because of the high degree of configurability and do it yourselfness that they offered. When it came down do it, we were a little disappointed in how limited the configurability was.  We had been under the impression that we could essentially create our own apps within the platform.  That was not the case.

But now it is.

With the release of Deltek Vision 7.0, or Deltek First, you now have something called Custom Infocenters. If you are going to Deltek Insight 2012 in Nasville, I will be talking about this for a few minutes during my session (PS-80 Putting Data in the Right Place) on Wednesday at 4:30 PM.

Even if you are not going to Insight, you can still benefit from this new feature or set of features.

One of the biggest limitations of Vision up to this point was that in order to store custom data… like a list of company vehicles or related equipment for example, you had to put that list somewhere inside of an already established section of Vision… like in Projects, or Employees, or Contacts or something… the problem was that a list of company vehicles really is its own entity, and belongs by itself.  The company vehicle fleet should be managed from within its own section… thus you had to rely on other applications to get the job done, then integrate these apps with Vision.

Now all that has changed… you can actually create your own module within Vision.

In about 30 minutes this morning I did just that.  I created a quick module for managing company vehicles in the Deltek Vision sample database.  The infocenter I created is simple and not well thought out… but it’s a simple idea that is very powerful at its core.  It is with this new tool that companies will finally be able to use Vision as a real ERP.  The ability to actually extend the app platform through the simple use of custom infocenters, coupled with workflows and a database that is completely open for development makes Deltek Vision a platform that can actually start living up to its promises.

I look forward to seeing what comes next!

Here are some screen shots from my brief experimentation this morning:

Here is the main section for the new infocenter I created in about 15 minutes. This is simple, but you can build on it even more using custom tabs, fields, grids etc… and automate the entire thing with workflows.
Note how the fields on this grid link back to other areas of the Vision application that are built in.

(click for larger image)

Here is an example custom grid I created. Note how the fields on this grid link back to other areas of the Vision application that are built in. You can also link custom infocenters to other custom infocenters. Very powerful indeed.

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 —


What exactly is a stored procedure? (for the laymen)

Ah… the magical stored procedures!

I have heard people talk about stored procedures for Vision, heard people ask about them, heard people say they can write them.  But what exactly IS a stored procedure?

A stored procedure is a batch of programming code written in T-SQL (short for transact SQL) that can be called upon from within SQL Server.  It is a set of instructions with a beginning, an end, a name, and some parameters (variables) that can be passed to it.

Stored procedures are constructed like this:

create procedure z_custom_my_fabulous_magical_code(@variable1 varchar(50), @variable2 int)

…. code goes here…


That’s the basic idea. What happens where “…code goes here…” is entirely up to the creator of that stored procedure… the programmer.

Because of the nature of the SQL programming language, and because of the power of it, it is important to have a test database upon which someone can test their programming talents or essays so that critical data is not deleted, altered or otherwise destroyed.

Because SQL is a programming language, then really only programmers (aka coders) have any business mucking around in there.

Thus, if someone tells you they can write/craft or otherwise produce those magical “stored procedures” to move data around or otherwise manipulate Deltek Vision for you. Be cautious.  Make sure that person can actually do what they claim.. that they have lots of programming experience, that they know the Deltek Vision database schema well, that in effect they know what the hell they are doing!

So how many stored procedures have I written?  Hundreds.  As well as hundreds of inline functions, scalar functions, views and crafted entire databases and applications from merely a clean slate and my brain.  That’s because I’m a programmer!

Don’t have one of those?  Go get one… or call me.


p.s. here’s an interesting one I wrote for analyzing Vision data… just for kicks.

ALTER procedure [dbo].[z_pr_pgc_dependent_table_assessor](@databasename varchar(255), @findstring varchar(255), @andclause varchar(8000), @optionPrint varchar(1)=’Y’)


— SELECT rows FROM sysindexes WHERE id = OBJECT_ID(‘tbTest’) AND indid < 2


create table #mytables(objectid varchar(255), tablename varchar(255), columnname varchar(255), relevantrowcount bigint)

declare @runsql varchar(8000)

— get relevant table list
set @runsql = ‘
insert #mytables(objectid, tablename, columnname, relevantrowcount)
select t.object_id, as ”table_name”, as ”column_name”, -1 as ”rowcount”
from [‘+@databasename+’].sys.tables t
inner join [‘+@databasename+’].sys.all_columns c
on c.object_id = t.object_id

where like ”%’+@findstring+’%” ‘
+ isnull(‘ and ‘+@andclause,”) + ‘
group by t.object_id,,
order by, ‘

if @optionprint = ‘y’ print @runsql

declare @objectid varchar(255), @tablename varchar(255), @thiscolumn varchar(255), @rowcount bigint

select top 1 @objectid = objectid, @tablename = tablename, @thiscolumn = columnname
from #mytables where relevantrowcount = -1

— loop through relevant tables getting relevant row counts
while isnull(@objectid,”) <> ”

set @runsql =
‘update #mytables
set relevantrowcount = (select count(*) from [‘+@databasename+’].dbo.[‘ + @tablename + ‘] where isnull(‘ + @thiscolumn + ‘,””)<> ”” )
where tablename = ”’ + @tablename + ”’ and columnname = ”’ + @thiscolumn + ”’ and relevantrowcount = -1 ‘
if @optionprint = ‘y’ print @runsql

set @objectid = ”

select top 1 @objectid = objectid, @tablename = tablename, @thiscolumn = columnname
from #mytables where relevantrowcount = -1

— spit out table stats
select *
from #mytables
order by tablename, columnname

declare @oldtable varchar(255)=”
— now sample data from those tables where it looks relevant
set @tablename = ”

select top 1 @tablename = tablename
, @thiscolumn = columnname
, @rowcount = relevantrowcount
, @runsql = case when relevantrowcount > 0 then
(case when relevantrowcount < 10
then ‘select * from [‘+@databasename+’].dbo.’ + tablename
else ‘select top 3 * from [‘+@databasename+’].dbo.’ + tablename
end )
else ‘print ””’
from #mytables
where tablename != @oldtable
and tablename > @tablename

while @tablename <> ‘**all done **’ and @tablename != @oldtable
select @tablename as tablename, @thiscolumn as thiscolumn, @rowcount as [rowcount]

if @optionPrint=’Y’
print @runsql

set @oldtable = @tablename

select top 1
@tablename = isnull(tablename,’**all done **’)
, @thiscolumn = columnname
, @rowcount = relevantrowcount
, @runsql = case when relevantrowcount > 0 then
(case when relevantrowcount < 10
then ‘select * from [‘+@databasename+’].dbo.’ + tablename
else ‘select top 3 * from [‘+@databasename+’].dbo.’ + tablename
end )
else ‘print ””’
from #mytables
where tablename != @oldtable
and tablename > @tablename


drop table #mytables


Keeping the big picture in mind

In order to effectively address a Deltek Vision implementation and make it fit better to a particular firm’s way of business, I most often walk through a process down through the 3 layers of the enterprise app, then back up again.

This is a very simplified explanation but it is merely to illustrate a framework of ideas, not give you instructions on how to do exactly what I do.

1. What is happening at the user experience and business process layer?
This is usually where the “pain” is felt. This is usually where the conversation starts. Things like this come up a lot:

We can’t make a report that shows … xyz
We have to export our invoices to Excel or Word so we can … xyz
We have to re-enter our payroll data over here…
We  can’t see the current billed amount in the project infocenter
We want to see everything on the project review screen in a report
We want to see consultant summaries and transaction details all on the same report
Setting up a project in Vision is too cumbersome if we have 3 levels of work break down structure

This is normally the origins of the wish list of items to address or problems to solve. To address these issues I look at the next two layers


2. The application layer
The first thing I do is ask:

What can Deltek Vision do out of the box without creating custom reports or writing SQL scripts?  How is it supposed to be done? Which items from the first layer can be solved just by using the tools at hand like workflows, custom fields, grids, report configuration or system configuration?  Which can be solved by merely changing a business process or the way something is done?

During this part of the process I often do lots of research, try different thing out on a test database, ask lots of questions of the client at hand to see what they’ve already tried.

Depending upon priorities and what can be done quickly with big returns on user comfort and business process improvement, I’ll often do the things from the first layer that can be accomplished by staying in this second layer.

As a general rule, I try to work with the tools presented as much as possible.  But, often it just can’t be done without going deeper and getting really technical, which leads us to the last layer.


3. The database layer
One of the great things about Deltek Vision is the open database on top of SQL Server. This means that it is possible to accomplish a great deal of automation using a combination of the tools in the second layer (workflows, custom fields and grids etc.) and SQL scripts.

Of course, everything done at this layer needs to take into consideration everything happening above it, because everything done down here in the database affects everything else on top.  The entire application is built on top of the database. It is in a real sense the foundation of the entire structure.


As an example, here is one issue and solution to ponder:

Problem in layer 1: Client was not able to store all data necessary in the experience grid in the employees infocenter.

Solution in layer 2: Create a custom grid to replace the standard grid, hide the standard grid

Solution in layers 2 and 3: Create a workflow (layer 2) to fire a stored procedure (layer 3) which synchronizes the data in the custom grid with the data in the standard grid so that the data in the standard grid is still available for other parts of the application.  Make sure the workflow fires whenever there is an update on the custom grid so the user experience is seamless (layer 1)

There you have it… layer 1,2,3 then back up again.


If you want me to address any particular topic or provide feedback feel free to leave a comment below.