Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.



identifying lost
identifying lost
Identifying Lost Events


fixing lost
fixing lost
Fixing Lost Events

1.  Make sure that there is a full backup of the CardioLog database before you continue to the next step.


Use CardioLog


/**** Fix Lost Events *****/

IF NOT EXISTS (SELECT name FROM sysindexes WHERE name = 'idx_tab_event_log_temp_for_update')
create index idx_tab_event_log_temp_for_update on tab_event_log(entityId, eventLogId) include (timestamp, eventType, entityType)

declare @startTime datetime
declare @endTime datetime
declare @top int 
declare @rowsupdated bigint 
declare @continue smallint
declare @EventLogId bigint

set @top = 10000
set @rowsupdated = 0 
set @startTime = '2010-09-01'  /* Edit start date (date format: YYYY-MM-DD) */
set @endTime = GETDATE() + 1

if object_id('tempdb..#tmp_fix_url') IS NOT NULL
drop table #tmp_fix_url

select top (@top) LG.eventlogid
into #tmp_fix_url 
tab_Event_log LG
LG.[timestamp] >= @startTime
and LG.[timestamp] < @endTime
and LG.entityid = '00000000-0000-0000-0000-000000000000'
and (LG.eventtype in (0,1)) 
and LG.entitytype <> -2 
order by LG.EventLogId asc

select @continue = @@ROWCOUNT

while @continue > 0 begin

update LG 
set LG.entityid =, LG.splocation = TR.location, 
LG.entitytype = TR.entitytype 
from tab_event_log LG
tab_sharepoint_tree TR on LG.SearchURL = TR.url 
#tmp_fix_url tmp on tmp.EventLogId = LG.EventLogId 
where TR.isDeleted=0

select @rowsupdated = @rowsupdated + @@ROWCOUNT

begin try
print convert(varchar(30), getdate(), 121) + ' - ' + cast(@rowsupdated as varchar(10)) + ' rows were updated'
end try
begin catch
end catch

select @EventLogId=max(EventLogId) from #tmp_fix_url

truncate table #tmp_fix_url 

insert into #tmp_fix_url 
select top (@top) LG.eventlogid
from tab_Event_log LG
LG.EventLogId > @EventLogId and
LG.entityid = '00000000-0000-0000-0000-000000000000' and
LG.[timestamp] >= @startTime and
LG.[timestamp] < @endTime and
(LG.eventtype in (0,1)) and
LG.entitytype <> -2
order by EventLogId asc

select @continue = @@ROWCOUNT


drop index tab_event_log.idx_tab_event_log_temp_for_update


/* Delete reporting data cache */

delete from tab_controls_cache

print 'Done'

Automatic Fine Tuning

The SharePoint Tree Auto Fine Tuning service is used in order to map maps SharePoint URLs to the their corresponding object in your SharePoint tree object in automatically. All items can then be accessed using the Object Explorer automatically. For instance, if If users access a SharePoint website through different zones (public URL'sURLs), or to SharePoint pages with custom parameters, this service will map the different URLs into a single corresponding SharePoint object, bypassing the need to manually create an entry for multiple variations of the same item in the URL Mappings module.

Each SharePoint object in the SharePoint tree structure has a unique  SharePoint SharePoint object ID, known as an SPID. The Portal Tree Updates service component retrieves all lost events and sends them to the SPIDFinder web service (, located on the your SharePoint WFEs), and then maps them by their SPID in within the tree structure.

 Starting with version, the SharePoint Tree Auto Fine Tuning web service is installed with the CardioLog Analytics SharePoint feature by default.

Manual Installation


  1. Create a CardioLogAgent folder under the SharePoint _layouts folder:

    For MOSS 2007 only:
    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\

    For SharePoint 2010 only:
    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\

    For SharePoint 2013 only:
    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\
  2. Copy the following files into the new folder from [CardioLog Installation Folder]\CardioLogAgent\:
  • Web.config
  • SpidFinder.asmx
  1. In /_layouts/CardioLogAgent/Web.config (located on the SharePoint WFE), add the following key in the <assemblies> section:

    For MOSS 2007 only:
    <add assembly="Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>

    For SharePoint 2010 only:
    <add assembly="Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/>

    For SharePoint 2013 only:
    <add assembly="Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"/> 
  2. In /_layouts/CardioLogAgent/Web.config (located on the SharePoint WFE), edit the following key in the <appsettings> section. The key value can be set to true or false. When true (by default), the SharePoint Tree Auto Fine Tuning web service runs under the Farm Administrator account.

    <add key="SpidFinderRunWithElevatedPrivileges" value="true" />

  3. In [CardioLog Installation Folder]/CardioLog.Services.exe.config (located on the CardioLog application server), edit the following keys if needednecessary:

    <add key="GetLostUrlsRegExExclude" value="_layouts|_vti_bin|editform\.aspx|newform\.aspx|aspx&amp;"/>
    A regular expression for excluding URLs to be fine-tuned.

    <add key="RunSpidFinder" value="true"/>
    Enable/disable the SharePoint Tree Auto Fine Tuning web service. Values - true/false
  4. In IIS Manager, create a CardioLogAgent web application under _layouts
  5. Verify that the SharePoint web application pool user has full control access to complete read/write permissions on the C:\Windows\Temp folder
  6. Test the Web Service by browsing SpidFinder.asmx and invoking the GetSPIDbyURL method. Submit the URL for your SharePoint website homepage, and verify that the guid guide value is not "00000000-0000-0000-0000-000000000000" 






  1. Clear the reports report data cache: 
     Go to CardioLog > From the navigation pane in CardioLog, go to Administration > System Configuration > Reporting Data and click on Clear Cache OR execute the following SQL script against the CardioLog database:

    Delete from


  1. tab_controls_cache

  2. Delete history versions of the report: 
     Go to CardioLog > Report From the navigation pane in CardioLog, click on Report Center, click the relevant report and click on Delete Historical Data.
  3. Regenerate reports
    CardioLog . CardioLog reports are generated automatically by the 
    Report Scheduling service. To regenerate a report on your own, click the report and select Open, then click Generate Report from the actions menu.