Top Categories:
Dynamics GP
ClassicPress

azurecurve ClassicPress Plugins: Disable FLoC

ClassicPress PluginsThis is part of the azurecurve ClassicPress Plugins series which introduces the plugins I have available for ClassicPress.

The plugin I am going to cover in this post, is one written for ClassicPress by John Alrcon which I have now adopted; Disable FLoC.

Functionality

Have you ever heard of “Federated Learning of Cohorts” – or FLoC? It is Google’s next-generation technique for tracking users across the web. They say it’s anonymous and safe. We know better. This plugin sets a header to disable the FLoC tracking.

Download

The plugin can be downloaded from my GitHub.

Click to show/hide the azurecurve ClassicPress Plugins Series Index

azurecurve ClassicPress Plugins: Username Protection

ClassicPress PluginsThis is part of the azurecurve ClassicPress Plugins series which introduces the plugins I have available for ClassicPress.

The plugin I am going to cover in this post, is one written for ClassicPress by John Alrcon which I have now adopted; Username Protection.

Functionality

This plugin allows you to remove anonymous access to usernames in ClassicPress to help mitigate brute-force attacks. For visitors who are not logged in, usernames are removed from the REST API, feeds, author pages, and prevented from exposure through other common vectors of discovery.

Download

The plugin can be downloaded from my GitHub.

Click to show/hide the azurecurve ClassicPress Plugins Series Index

SQL Function to Return Last Workflow Final Approval Date

Microsoft Dynamics GPThe below SQL function returns the last Microsoft Dynamics GP workflow final approval date and time; it is always returned, not just when final approved is the current status.

This function was created to be used in a check of approved documents to see when they had last been approved; it was used in conjunction with the SQL function which returns the current workflow status.

IF object_id(N'uf_AZRCRV_GetLastWorkflowFinalApprovalDate', N'FN') IS NOT NULL
    DROP FUNCTION uf_AZRCRV_GetLastWorkflowFinalApprovalDate
GO
CREATE FUNCTION dbo.uf_AZRCRV_GetLastWorkflowFinalApprovalDate(@WorkflowTypeName CHAR(50),@WfBusObjKey CHAR(200))
	RETURNS DATETIME
AS
/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
BEGIN RETURN ISNULL(( SELECT TOP 1 FORMAT(['Workflow History'].Workflow_Completion_Date, 'yyyy-MM-dd') + ' ' + FORMAT(['Workflow History'].Workflow_Completion_Time, 'HH:mm:ss.fff') FROM WF30100 AS ['Workflow History'] INNER JOIN WFI10002 AS ['Workflow Master'] ON ['Workflow Master'].WorkflowInstanceID = ['Workflow History'].WorkflowInstanceID WHERE ['Workflow Master'].Workflow_Type_Name = @WorkflowTypeName AND ['Workflow Master'].WfBusObjKey = @WfBusObjKey AND ['Workflow History'].Workflow_Action = 10 ORDER BY ['Workflow History'].DEX_ROW_ID DESC) ,'1900-01-01 00:00:00.000') END GO GRANT EXECUTE ON uf_AZRCRV_GetLastWorkflowFinalApprovalDate TO DYNGRP GO

Centralising Dictionaries in Microsoft Dynamics GP

Microsoft Dynamics GPFor as long as I’ve been working with Microsoft Dynamics GP, I’ve been setting clients up with centralised forms and reports dictionaries in order to simplify deployment. As long as you’re not using VBA which needs to be installed onto each client, centralising the forms and reports dictionaries means you can import and customisations omly once. If each client machine has its own local forms and reports dictionaries then you need to import onto every computer.

This week when I did this, I ran into problems getting the path working correctly. I’m sure I didn’t do anything differently than normal, but it didn’t work. It took me a few minutes to get sorted out, so I am posting the below path as a reminder than you can use a UNC path for accessing the remote dictionaries, but the slashes are backslashes instead:

//FILESERVER/Dynamics Central/Dictionaries/REPORTS.DIC

As long as you have a good network, centralising the forms and reports dictionaries is my recommendation to ensure that all clients have exactly the same customisations in use. You would not centralise the application dictionaries, just the ones for forms and reports.

Setting a Default Location for the Integration Manager Database

Microsoft Dynamics GPIntegration Manager installs with a sample database in the install folders as the default database. In virtually every case, the clients I work with have a centralised database shared by all clients. While users can amend the path through the Integration Manager application, you can also add a setting in the Microsoft.Dynamics.GP.IntegrationManager.ini file (by default located in C:\Program Files (x86)\Microsoft Dynamics\Integration Manager 18) to change the location for all users.

Under the [IMBaseProvider] heading add the following line where the highlighted section is the path to the database:

DBPath=\\fileserver\Integrations\IM.mdb

Slow Login Into One Microsoft Dynamics GP Company

Microsoft Dynamics GPI’m working on a few projects for a client at the moment and became aware that logging into their main company was taking almost a minute. Most of the work had been in subsidiaries at the start of the projects, but we’ve moved into the main company now. The subsidiaries are quite quick to log into, say 10 seconds, but the main company was over a minute.

It didn’t matter if this was logging into Dynamics GP itself or just switching between companies. Everything else was running normally (entering or posting transactions and running reports), but as I investigated I found that the problem was specifically related to the loading of the Dynamics GP home page and it was only affecting out user account (I confirmed with the client that they were not seeing speed problems when loading the home page).

The problem turned out to be very prosaic; there were a number of SmartList reminders setup for sales and inventory which were all running before the home page displayed. The main company is where most of the inventory is processed so these reminders are checking large numbers of items and related transactions; removing these favourites from our user restored the quickness of the home age in the main company.

Being able to use SmartList favourites as reminders is good, but if there are a few of them on large datasets, then they can have an impact on performance. As it was just our user account, I was able to remove the reminders without impact; I think they had been added when showing users how to add reminders. If this speed was affecting a user, I would look to see if the reminders could be removed and, if not, create some SmartList Builder (if they have it, otherwise SmartList Designer) which only select the relevant subset of data (such as by selecting only from the work table and not the history table).

New Location For The Microsoft Dynamics GP Developer Documentation On Microsoft Docs

Microsoft Dynamics GPI’ve been using, off and on, the eConnect developers documentation for a number of years. However, it seems that Microsoft have now closed down the old location and moved the documents to the Microsoft Docs website.

The new location is here.

I’m posting this here as it took me a long time to actually find the new location.

azurecurve ClassicPress Plugins: Estimated Read Time

ClassicPress PluginsThis is part of the azurecurve ClassicPress Plugins series which introduces the plugins I have available for ClassicPress.

The plugin I am going to cover in this post, is one written for ClassicPress by John Alarcon which I have now adopted; Estimated Read Time.

Functionality

This plugin allows you to display expected reading times on your articles and summaries; a filter allows the read time to be changed if the default of 200 words per minute is not suitable (more technical content would generally have a slower read time).

An example of this plugin can be see in the post heading where the estimated read time is shown.

Download

The plugin can be downloaded from my GitHub.

Click to show/hide the azurecurve ClassicPress Plugins Series Index

Happy 10th Birthday to azurecurve

My first post on this site, was 10 years ago today.

I had been working with Microsoft Dynamics GP for about 8 years by that time, making a lot of use of blogs by people like David Musgrave, Mark Polino, Leslie Vail and a few others. I’d been running other websites and thought I’d give bogging a go and see if I could contribute back to the Dynamics GP community.

10 today

In 10 years, I have posted 2,476 times, of which 1,888 of them have been about Microsoft Dynamics GP and related products. I think I have fulfilled my aim of contributing back, as I have had a number of consultants and clients all tell me the blog has been very useful.

In more recent years, I have blogged about a variety of other subjects with content management systems being my next most popular subject with 201 posts, with ClassicPress being included in 176 of them.

While I will continue to post about Dynamics GP and, increasingly, ClassicPress, I do post a variety of other subjects which are usually IT related. So, after 10 years, I have decided to create a new logo and tagline which you’ll see in the header of the site starting from today.

VBA Snippets: Open a File for Appending

MicrosoftThis post is part of the series on VBA Snippets.

The below VBA script can be used to open a text file for appending and then write a line to the bottom of the file; it could be combined with the example in this eries’ last post on selecting records from a Microsoft Dynamics ODBC connection to out put multiple lines.

The highlighted section is the path of the output file.

Dim objFSO As FileSystemObject
Dim objTextStream As TextStream

Const fsoForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextStream = objFSO.OpenTextFile(output path, fsoForAppending, True)

'Write line
objTextStream.WriteLine data to output

objTextStream.Close
Set objTextStream = Nothing