Hello to Flexmonster,
We started to implement a completely new data model and we would like to continue using Flexmonster, however I’m not sure our use case is supported, could you advice?
We are using Tabular mode in Azure SSAS. I read that Azure SSAS is supported, also I found somewhere on your page that Tabular mode is supported as well. But Azure SSAS doesn’t support XMLA, so accelerator is the only option how to connect to Azure SSAS (and it would be our preferred option anyways). But it seems that Accelerator supports only Multidimensional model, is that right?
I had a quick look into Accelerator code and it looks that All Discover* methods are specific for Cubes. Is that correct? If yes, don’t you plan to extend it to support tabular mode as well?
Another, lower priority, thing is that we are using Accelerator in ASP.NET Core project and AcceleratorProxyController is a based on ApiController which is WebAPI thing which can’t be used in ASP.NET Core. It would need to inherit from ControllerBase. So I’m currently using controller code you sent me last year, when I was fixing for you the concurrency issues, which I adjusted for ASP.NET Core (it just inherits from different base controller).
Anyways I think that it would be better if accelerator would expose just service and not whole controller, then it could be referenced from both. I can help you with fixing this and refactoring it to some better state if you would make accelerator code public or if you would give us access.
But more important for us is now Accelerator that supports tabular mode. I believe we could maybe spend some time on that helping you to implement it, but I’m not very familiar with AdomdClient as you probably are, so I’m not sure if it would be useful.
Thank you for writing.
Yes, we do have the plans on extending Flexmonster Accelerator functionality to support tabular mode. Our team would need to spend some more time on the investigation of this case.
As for the Accelerator refactoring, that seems to be a reasonable suggestion. We would need to discuss and arrange this task with the management.
We will keep you updated.
Thank you for giving us some time.
First of all, we wanted to assure you that Flexmonster supports both tabular and multidimensional model types. We have tested Flexmonster Accelerator with the tabular model and it works fine. However, there seems to be some specifics when using the tabular model in Azure SSAS. Our development team is going to have a closer look at it during the next two weeks. We will notify you about the results on January the 2nd.
As far as the second point mentioned by you goes, we are going to further elaborate on this topic as well. Our development team will spend some time investigating the options of the Accelerator refactoring. We will provide you with the updates on this topic on January the 15th.
Please let me know if you need any additional information.
Thanks for the reply. It’s good to hear that Tabular is supported in Accelerator, when I was looking into the code it seemed to me, that the code is quite specific for multidimensional model, but maybe I was wrong, I’m not very familiar with Adomd. In any case, I will look forward for outputs from your investigation, thanks a lot! Beginning of January is absolutely fine.
Accelerator refactoring would be great as well, do not hesitate to contact me if you need any help with that, I think that I have quite clear idea how it should look like.
Many thanks for your reply.
It’s always a pleasure to work with you.
Once again thank you for the good idea and professional advice.
Have a nice holiday.
I’ve just requested a trial license and my intention was to use the Flexmonster Accelerator in ASP.NET Core API controller with Angular frontend and OLAP data source.
As far as I understand from this thread and from here, it’s not currently possible, as the AcceleratorProxyController is ASP.NET WebAPI controller and the JS library doesn’t support sending custom HTTP headers (e.g. Authorization header) with OLAP data source.
As far I understand from the other thread, support for custom HTTP headers will be added in January 2019. Please consider also adding support for ASP.NET Core, as many new projects are using it.
One of the main reasons to choose this library was the Flexmonster Accelerator, which I intended to use integrated with my ASP.NET Core API behind OAuth2 JWT Token Authorization.
Any advice how can I do it now until waiting for an official support of ASP.NET Core? Is there a place I can see the code of this AcceleratorProxyController and copy it inside my own ASP.NET Core API controller?
It’s not a nice solution, but what we did as a temporary workaround is we decompiled the FlexmonsterProxyController (plus one more class) in some .NET decompiler (e.g. DotPeek), added the source into our solution and then just changed the base class of this controller from ApiController (WebAPI) to ControllerBase (ASP.NET Core). Then it works without any other changes.
Thank you for your reply and for the information! I will try to do the same, it’s very helpful to know that someone already did it and it worked well.
Thank you for writing to us. Our development team is going to investigate what can be done about the official support of ASP.NET Core. We will notify you about the results on January the 15th.
Please inform me in case of other questions.
We are glad to inform you that the latest version of the component includes the Azure Tabular SSAS mode support.
You are welcome to download the latest version and try it.
Please note that you need to add some additional configs:
AZURE_AUTHORITY - Azure authority URI (e.g. https://login.microsoftonline.com/<your_domain>)
AZURE_CLIENT_ID - Client ID of the service principal registered in Azure Active Directory
AZURE_CLIENT_SECRET - Client secret of the service principal registered in Azure Active Directory
Please let us know in case of any other questions.
Thanks for the update. We will try it next week and let you know in case of any issues.
Could you just advice what should be the resourceUrl that is passed to the AzureAuthHelper? Is it the address where our Flexmonster is running?
Thank you for the feedback.
Answering your question about
AzureAuthHelper, resourceUrl is the URL of your Azure Analysis Services instance (e.g. https://westeurope.asazure.windows.net).
So, setting up the auth helper can look like the following:
FlexmonsterProxyController.AuthHelper = new AzureAuthHelper(
"https://login.microsoftonline.com/<your domain on azure>", //AZURE_AUTHORITY
We are going to publish the guide about connecting to Azure with more detailed steps soon.
Also, we have an update regarding .NET Core support for the Accelerator.
The main dependency for the Accelerator that communicates with Analysis Services (Microsoft.AnalysisServices.AdomdClient) currently supports only .NET Framework and does not work with .NET Core.
So, it is not to possible to port the Accelerator right now. We have to postpone this task and wait until the official AdomdClient will be released for .NET Core.
Please let us know if you have any further questions.
Thanks Ian for the example, it’s clear to me now.
Regarding the .NET core, I know that AdomdClient isn’t supported in .NET Core. Maybe there was some misunderstanding, but we needed support in ASP.NET Core. That’s just a different framework for for web applications (that replaces ASP.NET WebAPI), but that doesn’t mean that it needs to run under .NET Core, you can run it in standard .NET framework as we are doing that.
So basically the only change required is that FlexmonsterProxyController inherits from ControllerBase (from Microsoft.AspNetCore Nuget packages) instead of ApiController (from Microsoft.AspNet.WebApi). What I’m suggesting is that Flexmonster.Accelerator.Core would contain just some service that would have all application logic that is currently in FlexmonsterProxyController, but it wouldn’t contain neither reference to WebApi/ASP.NetCore not any controller and you would just distribute source of sample controllers for WebApi and ASP.NetCore. It could be then used in both WebAPI/ASP.NET Core and it would be up to customer which option they choose. Another alternatives are two separate versions – one for WebAPI and second for Asp.NetCore or maybe third would be to have both controllers and references in the same DLL, you would just add the second controller that will be based on ControllerBase.
Let me know if you need any additional information.
Thank you for the clarification.
We will check regarding ASP.NET Core and update you soon about our progress.
We started to try your latest updates, but we found one obstacle, which is currently preventing us to use Accelerator in the way we would need. The ConnectionString to the database is currently static field on the Controller, which means that we can’t use different connection string per each request. We need to connect to multiple SSAS instances and also to specify different EffectiveUserName for impersonation – if I understood it correctly, if we connect with Azure Client ID, the actual username is removed from the connection string.
Do you think you could change the ConnectionString to be per instance or at least add some option how to override it? E.g. there could be per instance ConnectionStringOverride with fallback to static ConnectionString if override isn’t specified.
BTW, aren’t you thinking about releasing the source code of the accelerator? That would be probably the best option for us when we could implement it ourselves and then push it back to your repository…
Thank you for the update.
Taking into account your requests, we have prepared a package with Accelerator source code (it was sent to your email).
Also, it contains the latest changes we have made to support ASP.NET Core (see sample controller at
As for the ConnectionString, you can also override
CreateConnection method to apply your custom logic to support multiple connection strings.
As for the Azure Client ID, it modifies
Password properties of the connection string.
Please let us if you have any questions.
We have published a beta version of DLL for ASP.NET Core in the following thread: Analysis Services in Asp.net Core
Your feedback is highly appreciated.