azurecurve ClassicPress Plugins: Update Admin Menu

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

The plugin I am going to cover in this post, is a brand new one written for ClassicPress; Update Admin Menu.

Functionality

Allows the reorganisation of the ClassicPress admin menu allowing you to move more often used menu entries to the top of the menu.

Download

The plugin can be downloaded via my Development site.

Click to show/hide the azurecurve ClassicPress Plugins Series Index

azurecurve ClassicPress Plugins: From Twitter

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

The plugin I am going to cover in this post, is a brand new one written for ClassicPress; From Twitter.

Functionality

Automate the retrieval of tweets from Twitter and create posts on your ClassicPress site

From Twitter includes the following functionality;

  • Search Twitter and create tweets as posts or as a Tweet custom post type.
  • Specify the title and content in posts for retrieved tweets.
  • Choose whether to save tweet data.
  • Choose cron frequency (hourly, twice daily or daily).
  • Choose how many tweets to return each time the cron runs (max 100 as per Twitter api).
  • Choose whether Tweet images should be downloaded.

Make sure that once all the settings have been configured, you enable the cron job to run on the Cron Settings tab.

Download

The plugin can be downloaded via my Development site.

Click to show/hide the azurecurve ClassicPress Plugins Series Index

Using No-IP For External Access With a Dynamics IP Address: What Is No-IP?

Useful ApplicationsThis post is part of the short series on using Using No-IP For External Access With a Dynamics IP Address.

No-IP is a service which has been around for quite a long time now (I remember using a competitor of theirs back in 2004 (and possibly earlier) to use an external DNS entry to access a web server I was running at home on a dynamic IP address (my ISP at the time didn’t offer static IP addresses and I didn’t sign up for one wit my current provider).

No-IP as a company have several offerings, but the one I am looking at in this series is the Free Dynamic DNS offering which allows for 3 hostnames on a limited set of domains and requires you to confirm the DNS every 30 days. There are two paid offering with more hostnames, domains and which do not expire, but I only need one hostname so the free option is sufficient and I don’t mind clicking a link on an email to renew every 30 days.

As well as my use case of remotely accessing a NAS or computer, No-IP can allow you to access any Internet enabled device on your home network even when you have a dynamic IP address (if you have a static IP then you could connect just using the IP address, although using a hostname is easier to remember); there may be configuration required on your router to forward ports to the devices on your network.

I’ve also had my dad sign up and install No-IP so I can easily access his system remotely to help out with any problems he is having.

Using No-IP For External Access With a Dynamics IP Address: Series Index

Useful ApplicationsI do a lot of travelling for work and often want to connect to my home system to access a NAS or a computer which has been left on. Unfortunately, I have a dynamic IP address which means the IP address changes whenever the router restarts and, living in rural England, glitches which cause a router restart are not uncommon.

The solution to this is to use No-IP; a service I will introduce over the next few posts starting with what it is and how it works trough to setting it up and installing the update client.

The series index (below) will automatically update as each post goes live over the next few days, unless you’re reading it via a syndicated feed, in which case check Using No-IP For External Access With a Dynamics IP Address for the new posts.

Using No-IP For External Access With a Dynamics IP Address
What Is No-IP?
Creating An Account
Installing No-IP Client

Finding Missing Security Privileges Encountered When Starting Microsoft Dynamics GP

Microsoft Dynamics GPI’ve been doing work with a client recently to refrsh their security in Microsoft Dynamics GP. We used the Microsoft Dynamics GP Security Matrixc from Fastpath to get the core security tasks assigned to the relevant roles. However, after security roles were created and testing was done, one user role was received errors when logging into Microsoft Dynamics GP:

Microsoft Dynamics GP seurity error

You don't have security privileges to open this window. Contact your system administrator for assistance.

Continue reading “Finding Missing Security Privileges Encountered When Starting Microsoft Dynamics GP”

Jet Service Tier Windows Service Won’t Start

Jet ReportsI’ve been doing some work with a client recently to implement Jet Reports. We installed the Jet Service Tier to allow the management of data sources in a central repository. However, after installation we were unable to start the service and received an error each time:

Error 1067: The process terminated unexpectedly.

After doing some investigation, we found that what wasn’t being reported to us on the server was that there was part of the installation (which was executing some PowerShell) caught by a malware monitoring application, called Apex One, and blocked. We had an exception added for powershell.exe and were then able to install the Jet Service Tier again, after which the service was successfully started automatically.

Format XML

Useful WebsitesI posted a link to a website which will format your SQL code a while back and recently found myself looking for a way of formatting XML code to make it more readable.

One of the clients I was working with, had an integration sending data to eConnect to load into Microsoft Dynamics GP, and the XML was coming across as one long string and I needed to make it readable by breaking it over multiple lines. A quick search found me Free Online XML Formatter from freeformatter.com which includes a number of other tools which look useful for formatting/minifying/validating and so on.

Free Online XML Formatter - freeformater.com

SQL View Showing Serial Number Allocated to SOP from POP in Microsoft Dynamics GP

Microsoft Dynamics GPA recent project required a report of serial numbers received into Microsoft Dynamics GP on purchase orders and to which sales transaction they’d been allocated. I had a hunt around in my scripts folder and found an old script I’d written which only required some small changes to add the required fields.

The script uses INNER JOIN clauses as only assigned serial numbers were wanted, but this could easily be changed to LEFT JOIN to return serial numbered items which had been received but not yet allocated.

-- drop view if it exists
IF OBJECT_ID(N'uv_AZRCRV_POPSOPSerialNumbers', N'V') IS NOT NULL
	DROP VIEW uv_AZRCRV_POPSOPSerialNumbers
GO
-- create view
CREATE VIEW uv_AZRCRV_POPSOPSerialNumbers AS
SELECT
	['Purchasing Receipt Line Quantities'].PONUMBER
	,['Purchasing Receipt Line Quantities'].POPRCTNM
	,['Purchasing Receipt Line Quantities'].VENDORID
	,['Purchasing Receipt Line Quantities'].TRXLOCTN
	,['Sales Serial/Lot Work AND History'].ITEMNMBR
	,[Purchasing Serial Lot History'].SERLTNUM
	,['Sales Serial/Lot Work AND History'].SOPTYPE
	,CASE ['Sales Serial/Lot Work AND History'].SOPTYPE
		WHEN 1 THEN 'Quote'
		WHEN 2 THEN 'Order'
		WHEN 3 THEN 'Invoice'
		WHEN 5 THEN 'Back Order'
		ELSE ''
	END AS 'Type'
	,['Sales Serial/Lot Work AND History'].SOPNUMBE
	,['Sales Transactions'].DOCDATE
	,['Sales Transactions'].CUSTNMBR
FROM
	POP30330 AS [Purchasing Serial Lot History'] -- Purchasing Serial Lot History (POP30330)
INNER JOIN
	POP10500 AS ['Purchasing Receipt Line Quantities'] -- Purchasing Receipt Line Quantities (POP10500)
		ON
			['Purchasing Receipt Line Quantities'].POPRCTNM = [Purchasing Serial Lot History'].POPRCTNM
		AND
			['Purchasing Receipt Line Quantities'].RCPTLNNM = [Purchasing Serial Lot History'].RCPTLNNM
INNER JOIN
	SOP10201 AS ['Sales Serial/Lot Work AND History'] -- Sales Serial/Lot Work and History (SOP10201)
		ON
			['Sales Serial/Lot Work AND History'].SERLTNUM = [Purchasing Serial Lot History'].SERLTNUM
INNER JOIN
	(
		SELECT
			SOPNUMBE
			,SOPTYPE
			,DOCID
			,DOCDATE
			,CUSTNMBR
			,CUSTNAME
		FROM
			SOP10100 AS ['Sales Transaction Work'] -- Sales Transaction Work (SOP10100)
		UNION ALL
			SELECT
				SOPNUMBE
				,SOPTYPE
				,DOCID
				,DOCDATE
				,CUSTNMBR
				,CUSTNAME
			FROM
				SOP30200 AS ['Sales Transaction History'] -- Sales Transaction History (SOP30200)
	) AS ['Sales Transactions']
		ON
			['Sales Transactions'].SOPNUMBE = ['Sales Serial/Lot Work AND History'].SOPNUMBE
		AND
			['Sales Transactions'].SOPTYPE = ['Sales Serial/Lot Work AND History'].SOPTYPE
GO

GRANT SELECT ON uv_AZRCRV_POPSOPSerialNumbers TO DYNGRP
GO

SQL View to Return the Last Restore Date of Microsoft SQL Server Databases

Microsoft SQL ServerThis script will create a SQL view to select the last restore date for every database on a Microsoft SQL Server along with the user who performed the restore.

It has included a couple of other use columns in the returned data such as the collation_name and compatibility_level:

-- drop view if it exists
IF OBJECT_ID(N'uv_AZRCRV_GetLastDatabaseRestoreDate', N'V') IS NOT NULL
	DROP VIEW uv_AZRCRV_GetLastDatabaseRestoreDate
GO
-- create view
CREATE VIEW uv_AZRCRV_GetLastDatabaseRestoreDate AS
WITH LastRestores AS
	(
		SELECT
			d.name AS DatabaseName
			,d.create_date
			,d.compatibility_level
			,d.collation_name
			,r.restore_date
			,r.user_name
			,ROW_NUMBER() OVER (PARTITION BY d.Name ORDER BY r.[restore_date] DESC) AS RowNumber
		FROM
			master.sys.databases AS d
		LEFT JOIN
			msdb.dbo.[restorehistory] AS r
				ON
					r.[destination_database_name] = d.Name
	)

SELECT
	DatabaseName
	,create_date
	,compatibility_level
	,collation_name
	,restore_date
	,user_name
FROM
	LastRestores
WHERE
	RowNumber = 1
GO

GRANT SELECT ON uv_AZRCRV_GetLastDatabaseRestoreDate TO DYNGRP
GO

I created this as a view so that it could easily be included in a SmartList using either SmartList Designer or SmartList Builder to allow finance users to see how up-to-date their test system is.

SQL Script to Get Assigned Building Block Groups for Companies in Management Reporter

Microsoft Dynamics GPI recently did a Microsoft Dynamics GP and Management reporter upgrade for a client which incuded migrating the databases to a new server. After performing the upgrade, users were unable, in some companies, to see the reports in Management Reporter. When we looked into it, some of the companies had reverted to the Default building block group.

To easily identify the companies which had reverted, I created the below script which coud be rn on both the original and upgraded Management reporter databases; it lists all the companies and the assigned building block group:

/*
Created by Ian Grieve of azurecurve | Ramblings of an IT Professional (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). */
SELECT ['Case Control'].Code AS 'Company ID' ,['Case Control'].Name AS 'Company Name' ,['Control Specification Set'].Name AS 'Building Block ID' ,['Control Specification Set'].Description AS 'Building Block Name' FROM Reporting.ControlCompany AS ['Case Control'] INNER JOIN Reporting.ControlSpecificationSet AS ['Control Specification Set'] ON ['Control Specification Set'].ID = ['Case Control'].SpecificationSetID ORDER BY ['Case Control'].Code