Monday, November 6, 2017

The Group-Office roadmap 2018

In this post we want to give you an update about the roadmap for Group-Office. Some time ago we announced the development of version 7.0. Version 7.0 was going to be a full rewrite with a completely new PHP backend and a new responsive web interface to replace the current ExtJS interface. We we’re working on this for about 3 years aside the regular Group-Office 6 development and tailor made modules we produce.

Despite that the development resulted in a very nice piece of software, we’re not going ahead with it. The current Group-Office is so feature rich that it was probably going to take another 3 years to completely replace it. Mainly because we’re a small team that’s also doing lots of tailor made modules 50% of the time.
So we decided to make a big change in the path that lies ahead. Group-Office 7.0 was a great learning experience and was packed with very good ideas. We’re going to take these ideas and incorporate them into Group-Office 6 more gradually. So it will slowly transition into what Group-Office 7 was meant to be. A responsive Group-Office with a more intuitive interface.

We think it will be better for our existing customers that can be migrated gradually and they will see new features coming in real soon!

We will start with rewriting the backend. We’ll use a standard protocol called JMAP ( to support new clients in the future. That’s actually already near completion.
We will then start improving the current ExtJS based interface to work better on mobile devices and also make it more intuitive on the desktop.
Then we will start with redesigning each module one by one. You can keep track of our progress on our roadmap page:

Thursday, April 13, 2017

Get sales info with API call.

A customer asked how they could get all sales data from Group-Office on to a television screen. I've written this little script to get this info. Group-Office has no real API (yet) but it is possible to get this data.

The client class is used to connect to Group-Office and get's the year report data which they can use to display.

Because this might be useful to others I've written this tiny blog post:


class Client {

 private $host;
 private $curl;

 public function __construct($host, $username, $password) {
  $this->curl = curl_init();

  $this->host = rtrim($host, '/');

  curl_setopt($this->curl, CURLOPT_USERPWD, $username . ":" . $password);
  curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, TRUE);

 public function request($route, array $data = array()) {

  curl_setopt($this->curl, CURLOPT_URL, $this->host . '/index.php?r=' . $route);
  curl_setopt($this->curl, CURLOPT_POST, 1);
  curl_setopt($this->curl, CURLOPT_POSTFIELDS, http_build_query($data));

  $json = curl_exec($this->curl);

  return json_decode($json);

 public function __destruct() {


$client = new Client('', 'apiuser', 'SECRET');

$data = $client->request('billing/report/yearReport', array(
  'start_date' => '01-01-2017',
  'end_date' => '31-12-2017',
  'books' => json_encode(array('2'))