daniel SugarCRM

SugarBPM™ enables Sugar Enterprise and Ultimate edition customers the ability to automate complex business processes using a CRM workflow automation engine based on BPMN standards. Automated processes provides these customers increased productivity, reuse of best practices, and the ability to effectively manage the customer experience.

Anyone can rapidly design and deploy these business processes with a visual design interface. Each process can support complex decision cycles with a powerful rules builder to effectively optimize routing and approvals.

Individuals can receive, analyze, and react to template-driven notifications through any standard e-mail system, wireless devices, or any standard Web browser.

Process monitoring and audit tools provide for faster issue troubleshooting. Configurable user dashboards capture snapshots of ongoing sales workflows, tasks and monitor process status.

SugarBPM™ can also be integrated with external systems to break down organizational boundaries and ensure cross-departmental effectiveness.

  • This field is for validation purposes and should be left unchanged.


daniel Customer Story, News

We need Beta Tester

Each year more and more people globally are diagnosed with skin cancer. That means you should keep a close eye on your skin (and the skin of people around you). With early detection, the chance of survival is almost 100%, but a melanoma spreads relatively quickly and survival with metastatic melanoma is very limited. Due to several therapy options, this situation improved dramatically over the last years.

Regular (self) check of the skin is important, but there is still a lot of ignorance about melanoma and especially among young people. They underestimate the dangers of unprotected sunbathing and the use tanning beds. They also often do not realize that the skin damage they now incur increases their chances of melanoma and other forms of skin cancer in later life. Our app does not remove the

dermatologist it should help to find skin cancer in the early stage. If you need more information please visit this link

Azure API Management – how to address various APIs with one gateway server

Thomas Dillinger API Managment, Azure, Integration, News, News

Microsoft Azure API Management allows you to publish, manage, secure, and analyze your APIs in minutes.

Within each enterprise, there are various applications that communicate with each other and with external sources. A customer opting-in needs to be orchestrated to the CRM application, the newsletter application, the website and some more. But you don’t want to deal with all interfaces. That’s where Microsoft Azure API Management should be used.

Microsoft Azure API Management serves as a gateway to external sources, and connects all internal apps or microservices via one API interface. It creates an abstraction layer to have one endpoint to outside, and deals with connecting all relevant applications.

Azure API Management

So all applications behind the gateway are secure, properly connected and highly scalable.

The API Gateway extracts parameters from the incoming request and distributes the correct information to all backend sources.

For example extracting the email address:

<rewrite-uri template="@($"/optin/{context.Request.MatchedParameters["email"]}")" />  

Take advantage of Microsoft Azure API Management to have a robust, secure and scalable architecture.

Find out more about Azure.

Fellow Consulting AG becomes Microsoft Gold Partner

Thomas Dillinger Azure, News

Munich, April 2019 – Fellow Consulting AG has been named Gold Partner by Microsoft in the categories “Cloud Platform” and “ISV”. A result of outstanding competence, numerous successful projects and comprehensively certified consultants.

As a Cloud Platform Partner, Fellow Consulting helps its customers modernize their infrastructure and migrate applications, services and data to the cloud. With Microsoft Azure, Fellow Consulting has years of experience in one of the most widely used cloud computing platforms, enabling clients to operate highly available and professional hosting. Microsoft Azure offers great flexibility for software development as well as best performance, scalability and security.

As an ISV partner, Fellow Consulting uses the Azure infrastructure to develop numerous innovative solutions and apps for enterprise customers worldwide. For example, the “Medical Case App“, which ensures the optimal care of patients and their drug supply through technologies of machine learning and artificial intelligence, or the “Mole App“, with which birthmarks can be observed and classified by image recognition and machine learning.

Daniel Jordan, co-founder and Managing Partner of Fellow Consulting AG, summarizes: “The status as Microsoft Gold Partner proves our vast experience and solution competence in innovative technologies. It’s a great honor for our team and adds value to our customers. “

Only companies that have proven their competence in successful projects, certified consultants and many years of experience are honored as Microsoft Gold Partner.

About Fellow Consulting
Fellow Consulting AG acts as a global solution provider for CRM, customer experience solutions, cloud computing and mobile applications for over 10 years.
Fellow Consulting supports its customers from a wide range of industries and sizes in the selection, design, implementation and operation of enterprise solutions.
Through partnerships with major cloud vendors, SaaS solutions, mobile platforms and application software, Fellow Consulting develops also its own products and solutions. Including various CRM apps for mobile work, synchronization and integration solutions as well as mobile apps for a variety of purposes. #CRM, #Cloud, #SaaS, #BigData, #MachineLearning, #ArtificialIntelligence, #SugarCRM, #OracleCRM, #MicrosoftAzure, #Mobile, #Social

About Microsoft
Microsoft Corporation is an American multinational technology company with headquarters in Redmond, Washington. It develops, manufactures, licenses, supports and sells computer software, consumer electronics, personal computers, and related services.

Subscribe to Our Newsletter

We keep your data private and share your data only with third parties that make this service possible. Read our Privacy Policy.

Serverless computing with Azure functions

daniel Azure, Azure Functions

The next horizon in cloud computing is here: “Serverless Computing,” which is set to take the benefits of cloud computing to a new level, further reducing IT operational costs, allowing your organization to deploy services faster, and ultimately making you more nimble and responsive to customer requirements.

Despite the name “serverless,” this does not actually involve running code without servers. Instead it means that the business using the system is not responsible for purchasing, renting, or provisioning the servers or virtual machines upon which the code will run. Those resources are transparently allocated at runtime as they become available by the cloud provider via its serverless paradigm.

With Azure Functions you get a slice of a common virtual machine (VM) that is managed by Azure, for the brief period you need to run your custom functions code. As well as the improved VM cost efficiency you get with the service, I was blown away by how simple it is to quickly drop in small pieces of custom code to do discrete tasks. What’s more, Azure Functions easily integrates with other services to form a powerhouse solution.

With Azure Functions, you don’t have to allocate a VM. Nor do you have to create a special run-time environment, or worry about resource, scaling or VM lifetime management. Choose your favorite language, import function libraries using NuGet, and integrate seamlessly with various SaaS services and other Azure services. Either use various triggers or events to invoke your functions, or set them to run on a timed basis. Define input and output bindings for the flow of data and objects in and out of your Azure Functions. Functions can be implemented and deployed using Visual Studio or can be created directly using the Azure Portal blade for Functions App.

Consumption Plan vs App Service Plan
There are two models of allocation for Azure serverless computing: the Consumption Plan and the App Service Plan. Only the consumption-based Azure Functions model is truly serverless, while with the Azure App Service plan you still pay for resources and VMs.

Using the Azure Consumption Plan, we see true serverless computing. In this model, you pay per execution and only for the resources your function consumes, with dynamic scaling available if needed. It is a cloud-based concept where the cloud provider fully manages starting and stopping of a VM upon which a function will run to serve requests. Those requests are billed by an abstract measure of the resources required to satisfy the request, rather than per virtual machine, per hour. Scaling out is something that is automatically managed for you by Azure.

If your workloads are intermittent, or short running in nature, the Consumption Plan makes sense for your Azure Functions. When a functions app becomes idle after a short time (about five minutes as of today), running instances will turn down to zero. Then, when it needs to run again, it can take time to reload, resulting in latency. To avoid this delay, you can either use a regular App Service Plan with always-on enabled for Functions App, or use another mechanism to trigger one of the functions in Functions App once at least every five minutes to keep it running.

Fellow Consulting AG can help you tap into the benefits of Azure’s serverless cloud functionality.


For more information, refer to Azure Functions.

For more information on choosing the correct service plan for Azure Functions, refer to

For more information in best practices for Azure functions, refer to tips for improving the performance and reliability of Azure Functions.

Share this Post

Dynamic CSV Import into SugarCRM via Azure Function

Thomas Dillinger Azure, Azure Function, Integration, News, Python, SugarCRM

Microsoft Azure is easy going – with only a few lines of code you can create a CSV importer for SugarCRM. Free of charge up to 1 Million requests per month!

First of all, you create an Azure Function.

python3 -m venv fellowdemo
source fellowdemo/bin/activate
func init sugarfunc --worker-runtime python

Choose Azure Blob Storage Trigger, then add the Blob service in the Azure Portal.

After creating the blob, you need to enter the key in the function.

Define the file in the function

The import script takes only a few lines:

import logging
import azure.functions as func
import os, io, crm, json
import pandas as pd
from sugarcrm.client import Client
def main(myblob: func.InputStream):"Python blob trigger function processed blob \n"
                 f"Name: {}\n"
                 f"Blob Size: {myblob.length} bytes")
    file =
    csvf = io.BytesIO(file)    
    csvf = csvf.getvalue().decode('UTF-8')
    sniffer = csv.Sniffer()
    cnt = sniffer.sniff(csvf) (cnt.delimiter) 
    df = pd.read_csv(io.BytesIO(file), sep=cnt.delimiter, dtype=str)
    client = Client('', 'admin', '***')
    results = []
    results = json.loads(df.to_json(orient='records'))
    for item in results:
        #item['id'] = item['CONTRACT_ID'],indent=2))
        client.set_entry('Leads', item )

Create a simple CSV file to test the script.

Upload the file into the blob storage.

A second later, you see the file being processed:

An the records are created in the SUGARCRM!

Wow, having done a CSV import interface in a few lines of code!

More technical blogs:

Delete quickly data from Cosmos DB

daniel Cosmos DB Leave a Comment

Cosmos DB is one of the favor database we use in project. It is possible to start right away. As a developer you do not need to care about database tasks. You can ran Cosmos DB in different types like SQL, Graph, Mono or Casandra. The rest api is ready for any web or mobile apps. So all great features but only one points is not so easy.

Deleting Mass Data

If you need to delete quickly data from Cosmos DB it is possible to do this by store procedure. With the store procedure it is possible to run a select query to delete the data.

function DeleteByQueryProc(query) {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();
    var responseBody = {
        deleted: 0,
        continuation: true

    // Validate input.
    if (!query) throw new Error("The query in not valid");


    // Recursively runs the query w/ support for continuation tokens.
    // Calls tryDelete(documents) as soon as the query returns documents.
    function tryQueryAndDelete(continuation) {
        var requestOptions = {continuation: continuation};

        var isAccepted = collection.queryDocuments(collectionLink, query, requestOptions, function (err, retrievedDocs, responseOptions) {
            if (err) throw err;

            if (retrievedDocs.length > 0) {
                // Begin deleting documents as soon as documents are returned form the query results.
                // tryDelete() resumes querying after deleting; no need to page through continuation tokens.
                //  - this is to prioritize writes over reads given timeout constraints.
            } else if (responseOptions.continuation) {
                // Else if the query came back empty, but with a continuation token; repeat the query w/ the token.
            } else {
                // Else if there are no more documents and no continuation token - we are finished deleting documents.
                responseBody.continuation = false;

        // If we hit execution bounds - return continuation: true.
        if (!isAccepted) {

    // Recursively deletes documents passed in as an array argument.
    // Attempts to query for more on empty array.
    function tryDelete(documents) {
        if (documents.length > 0) {
            // Delete the first document in the array.
            var isAccepted = collection.deleteDocument(documents[0]._self, {}, function (err, responseOptions) {
                if (err) throw err;

                // Delete the next document in the array.

            // If we hit execution bounds - return continuation: true.
            if (!isAccepted) {
        } else {
            // If the document array is empty, query for more documents.

Create a quick UI for Cosmos DB with Flex

daniel Cosmos DB, Python Leave a Comment

Cosmos DB is one database for great building hubs. Sometime it is needs to offer some UI to the business users.

How easy it is to display or export the data in a CSV on a fly we want to show here in this post.

First we start a page.

def hello():
    return render_template('content.html', msg=msg)

In the html page we define the table.

<table id="table" class="table-striped table-sm  bright"
					<thead class="thead-dark">
							<th data-field="state" data-checkbox="true"></th>
							<th data-field="id">ID</th>				
							<th data-field="ident" data-sortable="true">IDENT</th>
							<th data-field="contact_channel" data-sortable="true">Contact Channel</th>
							<th data-field="usage" data-sortable="true">Usage</th>
							<th data-field="valid_from" data-sortable="true">Valid from</th>
							<th data-field="valid_to" data-sortable="true">Valid to</th>
							<th data-field="last_contact" data-sortable="true">Last Contact</th>
							<th data-field="source" data-sortable="true">Source</th>
							<th data-field="source_last_contact" data-sortable="true">Source Last Contact</th>
							<th data-field="source_obj" data-sortable="true">Source Obj</th>
							<th data-field="source_id"data-sortable="true" >Source Id</th>
							<th data-field="optin_version" data-sortable="true">Optin Version</th>
							<th data-field="validity"data-sortable="true">Validity</th>
							<th data-field="contact_type" data-sortable="true">Contact Type</th>
							<th data-field="status" data-sortable="true">Status</th>	

In the URL /getdatacosmos we getting the data from Cosmos

cosmos_date = None

    search = request.args.get("search")
    print ('Search is ', search)
    print (type(search))
    if search is None or len(search) < 1:
        cosmos_date ='%Y-%m-%d')
        cosmos_date = time.mktime(datetime.datetime.strptime(cosmos_date, '%Y-%m-%d').timetuple())
        search = None

def search_cosmos(search, cosmos_date):

    if search is not None:
            query = {'query': 'SELECT TOP 100000 * FROM c where CONTAINS(c.ident, "%s")' % search}
            print (query)
            query = {'query': 'SELECT * FROM c where c._ts >= %s' % cosmos_date }
            print (query)

    # Query them in SQL
    # SELECT * FROM c WHERE c.DOC_TYPE = "r" AND c.REQUEST_ID = "vjlIhTwLxdloG4EIXe6MXCEQ0qOYNwrw3VrxkrSjF8o="

    options = {}
    options['enableCrossPartitionQuery'] = True
    options['maxItemCount'] = -1
    result_iterable = client.QueryItems(app.config['DBLINK'], query, options)

    results = list(result_iterable)

    results = json.dumps(results, ensure_ascii=False)


    # results = results[1:-1]

    d = json.loads(results)
    return d

Import a CSV in a Cosmos DB over Azure Function

daniel Azure, Azure Function, Cosmos DB Leave a Comment

If you want automatic import a CSV into a Cosmos DB to update data an Azure Function is your best option for this.

My script is written in python. First, create a function.json to define the trigger:

  "scriptFile": "",
  "bindings": [
      "name": "myblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "transferin/Erweiterung_testdaten.csv",
      "connection": "sausstoraget_STORAGE"

import logging
import azure.functions as func
import os, io
import pandas as pd

import json    

import azure.cosmos.cosmos_client as cosmos_client
import azure.cosmos.errors as errors

config = {
    'ENDPOINT': os.environ['ENDPOINT'],
    'PRIMARYKEY': os.environ['PRIMARYKEY'],
    'DBLink': os.environ['DBLink']

def main(myblob: func.InputStream):"Python blob trigger function processed blob \n"
                 f"Name: {}\n"
                 f"Blob Size: {myblob.length} bytes")
    file = (type(file))
    df = pd.read_csv(io.BytesIO(file), sep=';', dtype=str) (df)
    results = []
    results = json.loads(df.to_json(orient='records')) (len(results))
    client = cosmos_client.CosmosClient(url_connection=config['ENDPOINT'], auth={'masterKey': config['PRIMARYKEY']})
    for item in results:"Import")
        item['id'] = item['CONTRACT_ID'],indent=2))

            client.CreateItem(config['DBLink'], item)
        except errors.HTTPFailure as e:
            if e.status_code == 409:
                  query = {'query': 'SELECT * FROM c where"%s"' % item['id']}
                  options = {}
                  docs = client.QueryItems(config['DBLink'], query, options)
                  doc = list(docs)[0]

                  # Get the document link from attribute `_self`
                  doc_link = doc['_self']
                  client.ReplaceItem(doc_link, item)



You can download the files from here

SugarCRM successfully launched at RTSoft

daniel News, References, SugarCRM

Munich, January 2019 – Fellow Consulting AG, an international provider of customer experience solutions with offices in Munich and London, has successfully introduced Sugar at RTSoft. RTSoft is a leading provider of software products and services for embedded solutions and modern IoT solutions.

RTSoft GmbH has more than 26 years’ experience in the development of intelligent products with integrated computing units as well as in developing network control technology, which is applied from microgrids to ultra-high voltage networks. The company employs over 120 highly skilled programmers and system software engineers specialized in RnD services and in creating commercially viable products.

To make business processes more effective and profitable and to drive business growth, RTSoft has chosen the innovative, flexible and cost-effective SugarCRM solution. As a competent SugarCRM partner, Fellow Consulting AG has accompanied RTSoft during the needs analysis, the design phase and the implementation through to the roll-out of the solution Fellow Consulting AG have also taken over the ongoing maintenance.

RTSoft uses Sugar for efficient marketing and sales processes. In the future customer and salesforce management, as well as customer communication and documentation will take place on a single platform, the Sugar platform. All marketing activities, such as newsletter distribution to customers and partners, lead management or follow-up of trade fairs, are controlled via the platform. The results of marketing and sales campaigns can be better captured and are more transparent. All teams have a complete overview of the current status of customer data, sales and marketing activities at any given time.

“We are very pleased with the quick and smooth implementation of Sugar at RTSoft. The high level of transparency about the entire “customer journey” allows RTSoft to make faster and better decisions. This has given RTSoft a major competitive advantage,” says Thomas Dillinger, co-founder and Managing Partner of Fellow Consulting AG.

Based on many years of experience and extensive know-how, Fellow Consulting was able to introduce the CRM solution at RTSoft quickly and cost-efficiently and coach the teams effectively to ensure a smooth roll-out of the new software. During the implementation Fellow Consulting always focused on the individual needs of its customer.

About Fellow Consulting
Fellow Consulting AG is based in Poing near Munich and London and operates worldwide as a solutions provider for customer experience, consulting and implementation services. With an experienced team of consultants, Fellow Consulting supports numerous customers of various industries and sizes, from planning to customization, to implementation of their projects.
Besides cutting-edge products like the CRM apps CRM Couch, CRM4Mobile, the CRM Offline Client CRMGadget2Go or various synchronization tools for Outlook, Lotus Notes and Gmail, Fellow Consulting creates mobile business apps for nearly every requirement. As SugarCRM Elite Partner and Oracle Gold partner Fellow Consulting focuses on customer relationship management.

About RTSoft
RTSoft is an innovative company with more than 26 years of experience in software development and implementation, over 150 highly-skilled experts committed to deliver unmatched value and 900+ completed projects.
They are experts in making your ‘things’ intelligent: from hardware-related software engineering to middle ware and glue logic programming right up to frontend engineering
RTSoft provides valuable services throughout the entire life-cycle of your project: Consulting, Development, Project design, Implementation, Technical support.