Dynamics AX 2012 – Reports – “No data available”

Problem:

A working report suddenly stops working for a “User” in production environment with message “No data available”.

Research:

While report worked for every other user and only that particular user seems to had a problem while running the particular report. While he was able to run other reports in that same module fine.

This was a strange enough situation for us, while we checked code, security etc… at first we were not able to find the exact cause of this behavior. But we were sure it has something to do with the security that is finally applied when running the report. So, we created a test user with same roles assigned on lower environment.

During our debugging and profiling the calls to actual database saw a strange behavior.

The query generated from X++ was same for user who was able to run the report and the user who wasn’t able to run the report, but interestingly the SQL Profiler showed EXTRA parameters added to where clause of SQL that was getting executed. The extra condition caused the data to not appear – the condition was always going to result in a FALSE.

The query generated was something like below notice 1=3

SELECT ………. FROM InventTable T1 Inner Join InventDim T3 … WHERE 1=3

This cause the data to not appear for that user, AX kernel seems to validate the permissions and inject the condition to make sure that data doesn’t come from the source – making the sure that data is being security and row level security is applied though this.

Solution:

The solution to the problem was to add all used tables used in the Query for the report in the user’s privileges in AX.

HTH

CREDIT: #awesome #team #visionet #findingsolutions

70-486 Experience

Just successfully completed 07-486 exam in first attempt. Total Hours logged in preparation were about near to 20.

As i can’t spill every bean that was in the test, but still can give general idea about how it was.

  1. 3 Case Studies – i thought those would be less. But it was fun doing it, each had more questions than i expected. 6, 10 and than 7.
  2. 22 Multiple Choice/ Code completion questions.
  3. Custom Mvc Model Binder related to composite value
  4. No SignalR question. I thought there would be one.
  5. Multiple design questions related to css/ html
  6. Web Farms 
  7. State management
  8. Azure Worker Roles and RDP Configuration management/ X509 Certification
  9. Authorization/ Authentication, how to limit access to user.
  10. MVC Routing/ Mapping
  11. Some questions related to http Handlers and Module implementation choice based on the problem given.

Overall, it was nice experience and if i hadn’t been working with asp.net mvc/ asp.net – it would be really hard to pass it through. Still, i could have done better if i studied as some of the questions were so in depth and we rarely use those kind of stuff and real application, or not care too much about how small things work. So, please analyze your expertise with asp.net mvc and try following study guides out there.

I did follow, http://www.bloggedbychris.com/2012/11/06/microsoft-exam-70-486-study-guide/ and also go through tutorials at asp.net site for mvc4 and mvc5. The exam also includes the questions related to MVC5.

Helpful links: 

  1. http://www.bloggedbychris.com/2012/11/06/microsoft-exam-70-486-study-guide/
  2.  http://www.asp.net/mvc
  3. http://pluralsight.com/training/Courses/TableOfContents/aspdotnet-mvc-advanced-topics
  4. http://pluralsight.com/training/Courses/TableOfContents/mvc4
  5. http://pluralsight.com/training/Courses/TableOfContents/aspdotnet-mvc5-fundamentals

Thanks,

Riz

AngularJS – Feed Reader (SPA)

An AngularJS feed reader based on 10 minute awesome video by Jeremy Likness 

It’s single page app (SPA) with all source code in one file, you can right click and copy source as you want and use it anywhere or play with it. It uses google ajax api and does JSONP callback for your feeds. It shows how quickly you can start working with AngularJS. 

Visit http://rizwanahmed.net to see the sample implementation and you can copy code by right clicking from there as well…

Thank you and I hope your will enjoy this. Please do visit Jeremy Likness and watch the video…

 

 

Default FTP Server at Mac…

in OX Lion the default FTP Server is hidden but it still exists. You just have to enable it. Use following command

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist

I had to transfer a big (4GB) file over to windows system and i found this was the only QUICKEST way of doing it.

You can use any ftp client at windows system and connect to the ftp server from mac.

Host = IP Address of your mac (use ifconfig from termial)

User = Your Mac User name

Password = Your Mac Password

And Connect

It will list all mac user’s directories and you can transfer whatever you want… 

Enjoy,

Riz

Mac – Node.JS Headache …

When installing nodejs from http://nodejs.org – everything goes smooth but at the end when you terminal and type “node” it says invalid command. !@!@#@#@#@#

Now, you need to check

  1. $PATH variable being set properly. It should have /usr/local/bin in it. If not than you need to add it through export command. This would be a great help https://www.cs.purdue.edu/homes/cs348/unix_path.html
  2. Ok now you added it if it wasn’t there – BUT still it didn’t work … What the heck??? I re-installed node js but the same result after point # 1. So, at this point do point # 3 🙂
  3. type ls /usr/local/bin in terminal – and to my amusement i got “ls: bin: permission denied“.. now that was really stressing 🙂
  4. But now you just have to give permissions to your self to this folder …  sudo chmod 775 /usr/local/bin
  5. That was itttttt !!!! :), type node and it will show you > in terminal…
  6. run node –v to check version

I am not mac expert but spent some time to make it happen – so just sharing if it helps anybody.

Thanks,

Riz

KendoUI – Validation Gotcha(s) …

While making Initial layout and architecture for the front end for our product @ Vanguard Software Group, i was trying to do POC and trying to hit all points where we going to use KendoUI.

I had came up pretty road blocker during this exercise – it was related to Loading a partial view into the application through Kendo’s Window widget.

FIRST ISSUE

The Validation doesn’t Simply work. No matter what i did, it just didn’t Budge. 

In researching the whole thing i came across multiple posts and ideas to make it work but all of them were not totally looking it deeply enough for me.

I found following:

  1. http://demos.kendoui.com/web/validator/index.html
  2. http://blog.janjonas.net/2011-07-24/asp_net-mvc_3-ajax-form-jquery-validate-supporting-unobtrusive-client-side-validation-and-server-side-validation
  3. http://www.telerik.com/community/forums/aspnet-mvc/window/client-validation-not-working-with-window-loaded-from-form.aspx
  4. http://www.kendoui.com/forums/kendo-ui-complete-for-asp-net-mvc/window/validation-problems-with-form-inside-window.aspx

Out of all those above Point # 4 had some proper half information… So took from there and fixed the issue by using the Window’s refresh method form kendo to bind it properly.

Hello Eric,

If you are using the jQuery validation then you should use the jQuery.validator.unobtrusive.parse method in the Window refresh event after the content has been loaded:

function refresh(e) {
    $.validator.unobtrusive.parse(this.element);
}

If you are using the Kendo Validator then you should initialize it on the form.

So by reading “If you are using the Kendo Validator then you should initialize it on the form.” I achieved it by doing following

LoginModule = function () {
var validator = null;
function Show() {
$(“#LayoutMain”).append(“<div id=’window’></div>”);
var window = $(“#window”);
if (!window.data(“kendoWindow”)) {
window.kendoWindow({
width: “600px”,
title: “Login”,
content: “Home/Login”, //partial View
modal: true,
resizable: false,
refresh: function () {
validator = $(“#LoginForm”).kendoValidator().data(“kendoValidator”); //do this IMPORTANT
}
});
window.data(“kendoWindow”).center();
}
};
function Submit() {
validator.validate();
};
return {
Show:
Show,
Submit:
Submit,
validator: validator
};
}();

See the BOLD lines above and follow the code.

SECOND

AND Lastly don’t FORGET to set HTML Element’s NAME attribute! If you don’t set it the Validation will also not work. Normally as coming from asp.net background i was only setting Id of the HTML element. and it was causing the validations messages to not appear.

 <input id=”Email” name=”Email” required validationMessage=”Email is required.” />

I hope this helps somebody out there 🙂

Thanks,
Riz