Sunday, February 19, 2017

AX 2012 - TFS multiple workspaces

Hi All

AX 2012 support only a single TFS workspace that mean a Dynamics AX Developer Box (SQL Server, AOS, etc.) for each developer.

Many of us use a Shared AX Environment, so many Developers connected to the same Dynamics AX Environment. More details at Microsoft Dynamics AX 2012 White Paper: Developing Solutions in a Shared AOS Development Environment

For this reason Martin DrĂ¡b created a custom Solution in order to help us to achieve this result, TFS workspaces in AX2012

This solution is fantastic.
The only issue is when an object is in check-out mode also other developers can modified it also if the check-in can only be handled by the check-out Owner.

In order to fix the behavior I have created a new method and modified another one in the SysVersionControlSystemFileBased Class.

Therefore:


Create a new method like “isCheckedOut” like this:

// AddaxWorkspaces
// Denis 20170219 - Check if the current Object is check-out by the current user
boolean isCheckedOut_dlx(Filename         _filenameCurrentLayer)
{
    Set                         checkedOutObjects = new Set(Types::String);
    SysVersionControlTmpItem    items;
    SysVersionControlSystem     sysVersionControlSystem;
    SysVersionControlParameters parameters = SysVersionControlParameters::find();

    str                         checkFileName;

    sysVersionControlSystem = SysVersionControlSystem::newType(parameters.vcsType);
    sysVersionControlSystem.init(parameters);

    if (sysVersionControlSystem)
    {
        items = sysVersionControlSystem.getCheckedOutItems();

        while select items
        {
            checkFileName = items.Filename;
            checkFileName = strReplace(checkFileName, parameters.AppRoot + '$\\' + parameters.TfsProject + "\\", "");

            if ( _filenameCurrentLayer == checkFileName )
                Return True;
        }

    }

    return false;
}

Modified the allowEdit method like this:

…..
        //Has the file been checked out
        if (!bitTest(WinAPI::getFileAttributes(filenameCurrentLayer), #FILE_ATTRIBUTE_READONLY)
        &&  this.isCheckedOut_dlx(filenameCurrentLayer)       // Denis 20170219 - AddaxWorkspaces
           )
            return true;

Thanks again to Martin and Stay Tuned!


Saturday, February 4, 2017

AX 2009 – SSRS Unable to connect to http://server/ReportServer/ReportService2005.asmx

Hi Folks

As you know, starting from AX 2009 was possible to use the SSRS Report instead of the Morphx Reports.

In the last weeks, I faced an issue during the Report Deployment. The error was:

Unable to connect to http://server/ReportServer/ReportService2005.asmx as specified in the config file for the report server at C:\…\RSReportServer.config. If this url is not correct please update the config file, otherwise make sure the report server is configured correctly.


Therefore, after some investigation and with help of Microsoft Support, I have fixed the issue.

Below what verify in priority order:

1-      Check if the Antivirus is enabled and in detail the Real-time scan. Disable it or create the relative rules

2-   Update the LanguageTable Table, field LabelFile. Only the languages with 1 on the LabelFile field will be deployed
            a.       select distinct LANGUAGE, HELPLANGUAGE from USERINFO
            b.   select * into LANGUAGETABLE_Backup from LANGUAGETABLE
            c.   update LANGUAGETABLE set LabelFile = 0 where LanguageId not in ('en-us', ‘it’)               //add any language found from first query

3-     Extend timeout settings
a.       Report Manager->Site settings->Report Execution Timeout->select “do not timeout report execution”.

b.      Increase the Timeout, so:
                                                               i.      Open “C:\Program Files\Microsoft SQLServer\MSSQL\ReportingServices\ReportManager\Web.config” and “C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\Web.config”
Search for httpRuntime executionTimeout="18000"

                                                             ii.      Open “C:\Program Files\Microsoft SQL Server\MSSQL.4\Reporting Services\ReportServer\rsreportserver.config”
Search for:
1.       Add Key="SQLCommandTimeoutSeconds" Value="300"
2.      Add Key="MaxActiveReqForOneUser" Value="60"
3.       Add Key="DatabaseQueryTimeout" Value="300"

                                                            iii.      Increase these values as above, Restart SSRS Services and then test it.

c.       Update machine.config to speedup .net performance
                                                               i.      In C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\MACHINE.CONFIG, replace processModel autoConfig="true" with processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"

                                                             ii.     In C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\WEB.CONFIG, locate the "system.web" Tag. Add the following as a child tag httpRuntime minFreeThreads="352" minLocalRequestFreeThreads="304" appRequestQueueLimit="5000"


Take care to make a backup of the configuration files before any modification!

Stay tuned!