In most cases where you have developed a on-premise applikasjon (console, service) these generates logfiles. Either for debugging purpose, or for validating the day-to-day execution wether there are errors or warning.
I tend to use text files, where I keep them for at least 14 days. The following command will delete all files older than 14 days from the c:\temp\logging folder. I have this at the top of my startup.cmd script.
rem delete files older than 14 days
forfiles /p "C:\temp\Logging" /m "*.*" /c "cmd /c del @path" /D -14
During my CRM Solution import debugging yesterday, I also wanted to see which user had been logged in to CRM the last few days. After some googling og trying I came up with this SQL statement for listing all users and last time they accessed CRM during the last 3 days.
NB! You have to change the “OrgName” to get this working on you CRM database server. It is tested for CRM 2011 and CRM 2016.
SELECT O.FriendlyName, SU.FullName as Name, SUO.LastAccessTime
FROM SystemUserOrganizations SUO
LEFT JOIN SystemUserAuthentication SUA ON SUO.UserId = SUA.UserId
AND LEFT(AuthInfo, 1)='C'
LEFT JOIN Organization O ON SUO.OrganizationId=O.Id
INNER JOIN OrgName_MSCRM.dbo.SystemUser SU ON SUO.CrmUserId = SU.systemuserid
WHERE LastAccessTime IS NOT NULL
AND O.FriendlyName = 'OrgName'
AND datediff(DAY,Lastaccesstime, getutcdate()) < 3
ORDER BY lastaccesstime
If you have some problems with Dynamics CRM On-premise you are able to enable tracing with PowerShell. In my case, I needed to get debug information on why my solution import is failing when I’m going to move it to a new organization.
Open the powershell prompt and use the Add-PSSnapin command shown in 1). Thereby, You can list the trace setting with the command shown in 2). Before you start the tracing, you show determine the timeline for when the error occurs and just enble it as close as the error as possible. Run the command in 3) to start the tracing. You should stop the tracing immediately after the error has occured. Use command in 4) to stop the tracing.
# 1) add
# 2) get crm trace settings
# 3) enable tracing
$Setting = Get-CrmSetting TraceSettings
$Setting.Enabled = $True
# 4) disbale tracing
$Setting = Get-CrmSetting TraceSettings
$setting.Enabled = $False
When you have tons of log file, the trace tool CRM Trace reader is nice to use for searing and filtering.
After we found out that SOTI Enterprise Mobility Management system didn’t fully support Windows 10 Store Apps in “Kiosk Mode”, we had to rewrite out latest app using WPF technologi instead.
In this process. I wanted a kind of watermark in my TextBox Controls. After some googling, I found a pretty nice library called “Extended WPF Toolkit” on codeplex (and Nuget).
How to create a watermark input textbox
- Add “Extended.Wpf.Toolkit” via Nuget
- Add XML Namespace at the top of the XAML file
- Add “xctk:WatermarkTextBox” instead of “TextBox” Control With the Watermark attribute set to the help text
<xctk:WatermarkTextBox x:Name="txtSearch" Watermark="type search pattern" />
Blogging haven’t been my first priority for the last year due different circumstances. As a result, I have decided to set a goal of at least one blog post every month. We have to learn something new every day in this industry to keep up with the changes, so it should always be something to write about 🙂
So, what have I been doing for the last year (2015)?
It started with a competence boom at the KiPi 2015 (“Know It, Prove It”) Challenge at Microsoft Virtual Academy in February where I followed and completed Cloud Development, Mobile Development and Hybrid Cloud learning paths. This inspired me to look at the different Azure exams, but unfortunately, busy projects made it impossible to complete these.
Between March and New Year, I worked on mainly upgrade and migration projects for customers, and the next few blog posts will summarize my experience from these projects and describe what kind of knowledge from these projects I have put into my toolbox.
Today, I came across a nice little SQL statement that list the content of the transaction log for a particular database. I haven’t investigated further, but there probably exists standard reports and/or 3rd party tools that list you the same thing, but as a geeky developer, I like SQL statements better 🙂
year(a.[Begin Time]) as dbYear,
month(a.[Begin Time]) as db,
FROM sys.fn_dblog(NULL, NULL) a
WHERE Operation IN (
group by year(a.[Begin Time]), month(a.[Begin Time])
order by year(a.[Begin Time]), month(a.[Begin Time])
The past few weeks I have been more and more irritated by a slow development environment in Visual Studio 2010. When scrolling large files, copying and pasting code sections around the file, or moving it to other projects within the same solution, I became quite annoyed by the slow VS2010 IDE.
I googled a bit and found a nice blog by Daniel Fisher.