diff --git a/broker/src/asapo_broker/database/database.go b/broker/src/asapo_broker/database/database.go
index 81cbb2d54e48345558f62f1a3c090a1021a9eefc..342eb2816c6895f70d07a0139b6b9ac8a8731e2e 100644
--- a/broker/src/asapo_broker/database/database.go
+++ b/broker/src/asapo_broker/database/database.go
@@ -2,6 +2,7 @@ package database
 
 type Agent interface {
 	ProcessRequest(db_name string, group_id string, op string, extra string) ([]byte, error)
+	Ping() error
 	Connect(string) error
 	Close()
 	Copy() Agent
diff --git a/broker/src/asapo_broker/database/database_test.go b/broker/src/asapo_broker/database/database_test.go
index db511efdc23c3ad09b4f36a51e8015ceb8c2a475..3ca42ab570bc3747bc7d90ba4db3483da902e6a7 100644
--- a/broker/src/asapo_broker/database/database_test.go
+++ b/broker/src/asapo_broker/database/database_test.go
@@ -10,12 +10,14 @@ func TestMockDataBase(t *testing.T) {
 	var db MockedDatabase
 	db.On("Connect", mock.AnythingOfType("string")).Return(nil)
 	db.On("Close").Return()
+	db.On("Ping").Return(nil)
 	db.On("Copy").Return(nil)
 	db.On("ProcessRequest", "", "", 0).Return([]byte(""), nil)
 
 	db.Connect("")
 	db.Close()
 	db.Copy()
+	db.Ping()
 	var err DBError
 	err.Error()
 }
diff --git a/broker/src/asapo_broker/database/mock_database.go b/broker/src/asapo_broker/database/mock_database.go
index 97570e51bf5e75c19fd9daf2f7ec4162173f4725..7edb3bb83cb530c8543506769b5296f9cb2b8c7b 100644
--- a/broker/src/asapo_broker/database/mock_database.go
+++ b/broker/src/asapo_broker/database/mock_database.go
@@ -19,6 +19,11 @@ func (db *MockedDatabase) Close() {
 	db.Called()
 }
 
+func (db *MockedDatabase) Ping() error {
+	args := db.Called()
+	return args.Error(0)
+}
+
 func (db *MockedDatabase) Copy() Agent {
 	db.Called()
 	return db
diff --git a/broker/src/asapo_broker/database/mongodb.go b/broker/src/asapo_broker/database/mongodb.go
index 921ca52312330f9fb12c89259f890089eff8187f..2d7ed3987ad064f357295be1258e14a3b9d3b2f6 100644
--- a/broker/src/asapo_broker/database/mongodb.go
+++ b/broker/src/asapo_broker/database/mongodb.go
@@ -65,6 +65,13 @@ func (db *Mongodb) updateDatabaseList() (err error) {
 	return err
 }
 
+func (db *Mongodb) Ping() (err error) {
+	if db.session == nil {
+		return &DBError{utils.StatusServiceUnavailable, no_session_msg}
+	}
+	return db.session.Ping()
+}
+
 func (db *Mongodb) dataBaseExist(dbname string) (err error) {
 	if db.databaseInList(dbname) {
 		return nil
diff --git a/broker/src/asapo_broker/database/mongodb_test.go b/broker/src/asapo_broker/database/mongodb_test.go
index 91bbad836823a528df2c055179616062866b0b20..44dc0c445849aaf3a91291efe1eb64935ae30d40 100644
--- a/broker/src/asapo_broker/database/mongodb_test.go
+++ b/broker/src/asapo_broker/database/mongodb_test.go
@@ -302,6 +302,18 @@ func TestMongoDBGetSizeNoDatabase(t *testing.T) {
 	assert.NotNil(t, err)
 }
 
+func TestMongoPing(t *testing.T) {
+	db.Connect(dbaddress)
+	defer cleanup()
+	err := db.Ping()
+	assert.Nil(t, err)
+}
+
+func TestMongoPingNotConected(t *testing.T) {
+	err := db.Ping()
+	assert.NotNil(t, err)
+}
+
 func TestMongoDBgetRecordByIDNotConnected(t *testing.T) {
 	_, err := db.ProcessRequest(dbname, "", "id", "2")
 	assert.Equal(t, utils.StatusServiceUnavailable, err.(*DBError).Code)
diff --git a/broker/src/asapo_broker/server/get_health.go b/broker/src/asapo_broker/server/get_health.go
index b7d9f2446fb62c2c3e7d353172978d4a9682e832..b124010030ae05fcfa9a919dee0b9e88f7cd2e60 100644
--- a/broker/src/asapo_broker/server/get_health.go
+++ b/broker/src/asapo_broker/server/get_health.go
@@ -4,8 +4,13 @@ import (
 	"net/http"
 )
 
-
 func routeGetHealth(w http.ResponseWriter, r *http.Request) {
+	db_new := db.Copy()
+	defer db_new.Close()
+	err := db_new.Ping()
+	if err != nil {
+		ReconnectDb()
+	}
 	r.Header.Set("Content-type", "application/json")
 	w.WriteHeader(http.StatusNoContent)
 }
diff --git a/broker/src/asapo_broker/server/get_health_test.go b/broker/src/asapo_broker/server/get_health_test.go
index 0efbdf70d17c57c0ebe81ea9a7cc8956c06f01ee..60a91692df0f5a60caee4d4bef3e5f9e4483dc36 100644
--- a/broker/src/asapo_broker/server/get_health_test.go
+++ b/broker/src/asapo_broker/server/get_health_test.go
@@ -1,13 +1,48 @@
 package server
 
 import (
-	"github.com/stretchr/testify/assert"
+	"asapo_broker/database"
+	"asapo_common/logger"
+	"errors"
+	"github.com/stretchr/testify/suite"
 	"net/http"
 	"testing"
 )
 
+type GetHealthTestSuite struct {
+	suite.Suite
+	mock_db *database.MockedDatabase
+}
+
+func (suite *GetHealthTestSuite) SetupTest() {
+	statistics.Reset()
+	suite.mock_db = new(database.MockedDatabase)
+	db = suite.mock_db
+	logger.SetMockLog()
+}
+
+func (suite *GetHealthTestSuite) TearDownTest() {
+	assertExpectations(suite.T(), suite.mock_db)
+	logger.UnsetMockLog()
+	db = nil
+}
+
+func TestGetHealthTestSuite(t *testing.T) {
+	suite.Run(t, new(GetHealthTestSuite))
+}
+
+func (suite *GetHealthTestSuite) TestGetHealthOk() {
+	suite.mock_db.On("Ping").Return(nil)
+	ExpectCopyClose(suite.mock_db)
+
+	w := doRequest("/health")
+	suite.Equal(http.StatusNoContent, w.Code)
+}
+
+func (suite *GetHealthTestSuite) TestGetHealthTriesToReconnectsToDataBase() {
+	suite.mock_db.On("Ping").Return(errors.New("ping error"))
+	ExpectCopyCloseReconnect(suite.mock_db)
 
-func TestGetNext(t *testing.T) {
 	w := doRequest("/health")
-	assert.Equal(t, http.StatusNoContent, w.Code)
+	suite.Equal(http.StatusNoContent, w.Code)
 }