Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
vadimtsushko
Partner - Creator III
Partner - Creator III

Qlik Sense integration with Version Control Systems

What kind of workflow for integration with VCS is available now or will be available in Qlik Sense Server environment?


  • Full application export into text/xml format (analogue of -prj forders for QlikView)
  • $(include...) $(must_include...) directives for load scripts
  • Maybe export/import of Master items into some sort of text files? 

Best regards, Vadim

24 Replies
mountaindude
Partner Ambassador
Partner Ambassador

It is indeed possible to add revision control by storing QV apps in PRJ folders, as well as using the include approach (works for both QV and Sense).

But what Sense needs, IMHO, is proper integration with the major revision control systems.

Should be possible to revision control all parts of an app excluding the data itself (doesn't make sense to revision control tens of gigabytes of data..).

Just as Sense gives us better control over security rules and better logging, it could *really* use better integration with for example Git (Git ought to be the primary revision control system to integrate, given its omnipresence today).

In fact, for many larger organisations, revision control of apps and all associated metadata is probably critically needed in order to achieve compliance with for example auditing and regulatory frameworks.
"Who made what change when" is the question we need to be able to answer, for any Sense app. And being able to roll back to any previous version of an app, of course.

Just my $0.02..

/Göran

Please mark the post as a solution if it provided you with a solution to the topic at hand. Thanks!
Alexander_Thor
Employee
Employee

It's an interesting discussion for Qlik Sense in terms of what you want to control.
Only the "core" assets such as load script, master items, approved sheets/bookmark/objects/stories? Should user created content be version controlled also?

I have played around with a little node service that pushes load scripts into Git for example.

It would not be hard to also stringify the app seeing as the entire layout is just a JSON structure, then serialize it and re-build the app again.

Now the hard part has always been when to push seeing as we don't have any save event anymore due to automatic save.

Gah, this turned into a rant so tl;dr this sounds like a perfect open source project on top of QS

Not applicable

I think Qlik Sense is in need of this very bad. And your rant sounds like it's easy to implement . I think user created content, security rules should also be version controlled.

I am developing in Qlik Sense now and I've been doing it for a month or two. I had some problem with corrupted files after reloads, and sheets disappearing. The later happened after I deleted some sheets, added some new and filled those with some intricate set analysis and when I was done for the day and I duplicated the app, so I had a backup if it would be corrupt, those new sheets I spent half a day developing disappeared.

I would say you should be able to set a task for when to push. Every 10 min could be set to default if version control enabled.

vadimtsushko
Partner - Creator III
Partner - Creator III
Author

I would really recommend you to manage expressions externally. See for example QlikView Deployment Framework, or my InQlik Expression Editor in QlikView Deployment Framework environment

That good for many reasons not related to disaster recovery. But obviously if formulas in your applications

look like $(SalesPrevMonth) or $(formulaWithIntricateSetAnalises) and actual formulas are in external text files and version controlled - disaster recovery is much less painful.

On the other hand disappearance of sheets is a sad thing anyway

Not applicable

I do manage load scripts and expressions externally but I think it should be handled internally. Why not?

If the master library where shared across all apps (master implies it should) and load script sections, and sheets where master library items, and the master library was version controlled within the Qlik Sense platform then you wouldn't need to have external files at all.

I think Qlik has that ambition to go down this road, it's just not there yet.

mountaindude
Partner Ambassador
Partner Ambassador

No worries about the rant Alexander

A first good step would be to have the possibility to store app snapshots in Git, together with an associated version tag. It would be nice if one could also do diffs etc, but as a starting point I would be more than happy with a setup that allows me to pull back a previous version of an app from Git, reload that retrieved app and then have a complete, previous version of the app.

I.e. totally ok for starters to store all app metadata (everything except the fact/dimensional data) as a blob, JSON or whatever in Git, version tag it and that's it.

Please mark the post as a solution if it provided you with a solution to the topic at hand. Thanks!
wizardo
Creator III
Creator III

Hi,

this is an old thread but never the less

are there any news on version control with sense?

Alexander_Thor
Employee
Employee

2 months later...
But you can check out https://github.com/mindspank/serializeapp

There is a repo there also which is called build app which does the other way, i.e json > app.

mountaindude
Partner Ambassador
Partner Ambassador

That's very cool!

What parts of the app does it return?

Load script, UI definitions, loaded data,..?

Göran

On 25 Aug 2015, at 15:14, Alexander Karlsson <qcwebmaster@qlikview.com>

Please mark the post as a solution if it provided you with a solution to the topic at hand. Thanks!
Alexander_Thor
Employee
Employee

In short, pretty much everything besides actual data (I probably missed some constructs so if you find something just let me know)

App properties, sheets and it's children (charts), measures/dimensions/masterobjects in the library, snapshots, bookmarks, stories and it's children (slide and slide items), load script, data connections, field definitions (not the data) and embedded media definitions.

From 2.0 we launched the ability to embed things into a qvf, typically images, and at this point I'm only referencing them. A future enhancement could be to base64 encode them into the JSON blob.

Edit: See me answer in this thread also for more examples: serializeapp