├── .gitattributes
├── .gitignore
├── BDK.XrmToolBox
├── BDK.XrmToolBox.RecycleBin
│ ├── BDK.XrmToolBox.RecycleBin.csproj
│ ├── FetchXml.Designer.cs
│ ├── FetchXml.resx
│ ├── Model
│ │ ├── AuditItem.cs
│ │ └── DeletedField.cs
│ ├── Plugin.cs
│ ├── PluginControl.Designer.cs
│ ├── PluginControl.cs
│ ├── PluginControl.resx
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── DataSources
│ │ │ ├── BDK.XrmToolBox.RecycleBin.Model.AuditItem.datasource
│ │ │ └── BDK.XrmToolBox.RecycleBin.Model.DeletedField.datasource
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── Delete.gif
│ │ ├── Refresh.gif
│ │ └── StepEnabled.gif
│ ├── app.config
│ └── packages.config
├── BDK.XrmToolBox.StorageCleaner
│ ├── BDK.XrmToolBox.StorageCleaner.csproj
│ ├── Plugin.cs
│ ├── PluginControl.Designer.cs
│ ├── PluginControl.cs
│ ├── PluginControl.resx
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── Delete.gif
│ │ ├── PluginProfile.gif
│ │ └── Refresh.gif
│ ├── Settings.Designer.cs
│ ├── Settings.resx
│ ├── app.config
│ └── packages.config
├── BDK.XrmToolBox.UserAuditViewer
│ ├── BDK.XrmToolBox.UserAuditViewer.csproj
│ ├── Common.cs
│ ├── InactiveUsers.Designer.cs
│ ├── InactiveUsers.cs
│ ├── InactiveUsers.resx
│ ├── Model
│ │ ├── AuditLog.cs
│ │ └── CRMUser.cs
│ ├── Plugin.cs
│ ├── PluginControl.Designer.cs
│ ├── PluginControl.cs
│ ├── PluginControl.resx
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── DataSources
│ │ │ ├── BDK.XrmToolBox.UserManagement.Model.AuditTransaction.datasource
│ │ │ ├── BDK.XrmToolBox.UserManagement.Model.AuditUserLogin.datasource
│ │ │ ├── BDK.XrmToolBox.UserManagement.Model.CRMUser.datasource
│ │ │ └── BDK.XrmToolBox.UserManagement.Model.LoginLog.datasource
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Readme.MD
│ ├── Resources
│ │ ├── AssemblySelected.gif
│ │ ├── Delete.gif
│ │ ├── Organization.gif
│ │ └── UninstallProfiler.gif
│ ├── Settings.Designer.cs
│ ├── Settings.resx
│ ├── ShowInactiveUsers.Designer.cs
│ ├── ShowInactiveUsers.cs
│ ├── ShowInactiveUsers.resx
│ ├── app.config
│ └── packages.config
├── BDK.XrmToolBox.sln
├── DeepakProfilePic.jpg
└── References
│ ├── DocumentFormat.OpenXml.dll
│ ├── McTools.Xrm.Connection.dll
│ ├── Microsoft.Crm.Sdk.Proxy.dll
│ ├── Microsoft.Xrm.Sdk.dll
│ ├── XrmToolBox.Extensibility.dll
│ └── XrmToolBox.exe
├── LICENSE
├── README.md
└── _config.yml
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | [Xx]64/
19 | [Xx]86/
20 | [Bb]uild/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | artifacts/
46 |
47 | *_i.c
48 | *_p.c
49 | *_i.h
50 | *.ilk
51 | *.meta
52 | *.obj
53 | *.pch
54 | *.pdb
55 | *.pgc
56 | *.pgd
57 | *.rsp
58 | *.sbr
59 | *.tlb
60 | *.tli
61 | *.tlh
62 | *.tmp
63 | *.tmp_proj
64 | *.log
65 | *.vspscc
66 | *.vssscc
67 | .builds
68 | *.pidb
69 | *.svclog
70 | *.scc
71 |
72 | # Chutzpah Test files
73 | _Chutzpah*
74 |
75 | # Visual C++ cache files
76 | ipch/
77 | *.aps
78 | *.ncb
79 | *.opendb
80 | *.opensdf
81 | *.sdf
82 | *.cachefile
83 | *.VC.db
84 |
85 | # Visual Studio profiler
86 | *.psess
87 | *.vsp
88 | *.vspx
89 | *.sap
90 |
91 | # TFS 2012 Local Workspace
92 | $tf/
93 |
94 | # Guidance Automation Toolkit
95 | *.gpState
96 |
97 | # ReSharper is a .NET coding add-in
98 | _ReSharper*/
99 | *.[Rr]e[Ss]harper
100 | *.DotSettings.user
101 |
102 | # JustCode is a .NET coding add-in
103 | .JustCode
104 |
105 | # TeamCity is a build add-in
106 | _TeamCity*
107 |
108 | # DotCover is a Code Coverage Tool
109 | *.dotCover
110 |
111 | # NCrunch
112 | _NCrunch_*
113 | .*crunch*.local.xml
114 | nCrunchTemp_*
115 |
116 | # MightyMoose
117 | *.mm.*
118 | AutoTest.Net/
119 |
120 | # Web workbench (sass)
121 | .sass-cache/
122 |
123 | # Installshield output folder
124 | [Ee]xpress/
125 |
126 | # DocProject is a documentation generator add-in
127 | DocProject/buildhelp/
128 | DocProject/Help/*.HxT
129 | DocProject/Help/*.HxC
130 | DocProject/Help/*.hhc
131 | DocProject/Help/*.hhk
132 | DocProject/Help/*.hhp
133 | DocProject/Help/Html2
134 | DocProject/Help/html
135 |
136 | # Click-Once directory
137 | publish/
138 |
139 | # Publish Web Output
140 | *.[Pp]ublish.xml
141 | *.azurePubxml
142 |
143 | # TODO: Un-comment the next line if you do not want to checkin
144 | # your web deploy settings because they may include unencrypted
145 | # passwords
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # NuGet Packages
150 | *.nupkg
151 | # The packages folder can be ignored because of Package Restore
152 | **/packages/*
153 | # except build/, which is used as an MSBuild target.
154 | !**/packages/build/
155 | # Uncomment if necessary however generally it will be regenerated when needed
156 | #!**/packages/repositories.config
157 | # NuGet v3's project.json files produces more ignoreable files
158 | *.nuget.props
159 | *.nuget.targets
160 |
161 | # Microsoft Azure Build Output
162 | csx/
163 | *.build.csdef
164 |
165 | # Microsoft Azure Emulator
166 | ecf/
167 | rcf/
168 |
169 | # Windows Store app package directory
170 | AppPackages/
171 | BundleArtifacts/
172 |
173 | # Visual Studio cache files
174 | # files ending in .cache can be ignored
175 | *.[Cc]ache
176 | # but keep track of directories ending in .cache
177 | !*.[Cc]ache/
178 |
179 | # Others
180 | ClientBin/
181 | [Ss]tyle[Cc]op.*
182 | ~$*
183 | *~
184 | *.dbmdl
185 | *.dbproj.schemaview
186 | *.pfx
187 | *.publishsettings
188 | node_modules/
189 | orleans.codegen.cs
190 |
191 | # RIA/Silverlight projects
192 | Generated_Code/
193 |
194 | # Backup & report files from converting an old project file
195 | # to a newer Visual Studio version. Backup files are not needed,
196 | # because we have git ;-)
197 | _UpgradeReport_Files/
198 | Backup*/
199 | UpgradeLog*.XML
200 | UpgradeLog*.htm
201 |
202 | # SQL Server files
203 | *.mdf
204 | *.ldf
205 |
206 | # Business Intelligence projects
207 | *.rdl.data
208 | *.bim.layout
209 | *.bim_*.settings
210 |
211 | # Microsoft Fakes
212 | FakesAssemblies/
213 |
214 | # GhostDoc plugin setting file
215 | *.GhostDoc.xml
216 |
217 | # Node.js Tools for Visual Studio
218 | .ntvs_analysis.dat
219 |
220 | # Visual Studio 6 build log
221 | *.plg
222 |
223 | # Visual Studio 6 workspace options file
224 | *.opt
225 |
226 | # Visual Studio LightSwitch build output
227 | **/*.HTMLClient/GeneratedArtifacts
228 | **/*.DesktopClient/GeneratedArtifacts
229 | **/*.DesktopClient/ModelManifest.xml
230 | **/*.Server/GeneratedArtifacts
231 | **/*.Server/ModelManifest.xml
232 | _Pvt_Extensions
233 |
234 | # LightSwitch generated files
235 | GeneratedArtifacts/
236 | ModelManifest.xml
237 |
238 | # Paket dependency manager
239 | .paket/paket.exe
240 |
241 | # FAKE - F# Make
242 | .fake/
243 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/FetchXml.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.RecycleBin {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class FetchXml {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal FetchXml() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.RecycleBin.FetchXml", typeof(FetchXml).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to <fetch>
65 | /// <entity name="audit" >
66 | /// <attribute name="objecttypecodename" />
67 | /// <attribute name="regardingobjectid" />
68 | /// <attribute name="regardingobjectidname" />
69 | /// <attribute name="createdon" />
70 | /// <attribute name="userid" />
71 | /// <attribute name="objectid" />
72 | /// <attribute name="auditid" />
73 | /// <filter type="and" >
74 | /// <condition attribute="operation" operator="eq" value="3" />
75 | /// <condition attribute="createdon" operator="ge" value="{0}" />
76 | /// <condition attribute="createdon" o [rest of string was truncated]";.
77 | ///
78 | internal static string DeleteAuditLogsByUser {
79 | get {
80 | return ResourceManager.GetString("DeleteAuditLogsByUser", resourceCulture);
81 | }
82 | }
83 |
84 | ///
85 | /// Looks up a localized string similar to <fetch>
86 | /// <entity name="audit" >
87 | /// <attribute name="objecttypecodename" />
88 | /// <attribute name="regardingobjectid" />
89 | /// <attribute name="regardingobjectidname" />
90 | /// <attribute name="createdon" />
91 | /// <attribute name="userid" />
92 | /// <attribute name="objectid" />
93 | /// <attribute name="auditid" />
94 | /// <attribute name="objecttypecode" />
95 | /// <attribute name="actionname" />
96 | /// <attribute name="action" />
97 | /// <attribute name="objectidname" />
98 | /// <filter type="and" >
99 | /// <condition attribute [rest of string was truncated]";.
100 | ///
101 | internal static string DeletedAuditLogs {
102 | get {
103 | return ResourceManager.GetString("DeletedAuditLogs", resourceCulture);
104 | }
105 | }
106 |
107 | ///
108 | /// Looks up a localized string similar to <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" >
109 | /// <entity name="systemuser" >
110 | /// <attribute name="fullname" />
111 | /// <attribute name="systemuserid" />
112 | /// <filter type="and" >
113 | /// <condition attribute="isdisabled" operator="eq" value="0" />
114 | /// <condition attribute="accessmode" operator="eq" value="0" />
115 | /// </filter>
116 | /// <order attribute="fullname" />
117 | /// </entity>
118 | ///</fetch>.
119 | ///
120 | internal static string LicencedUsers {
121 | get {
122 | return ResourceManager.GetString("LicencedUsers", resourceCulture);
123 | }
124 | }
125 | }
126 | }
127 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/FetchXml.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | <fetch>
122 | <entity name="audit" >
123 | <attribute name="objecttypecodename" />
124 | <attribute name="regardingobjectid" />
125 | <attribute name="regardingobjectidname" />
126 | <attribute name="createdon" />
127 | <attribute name="userid" />
128 | <attribute name="objectid" />
129 | <attribute name="auditid" />
130 | <filter type="and" >
131 | <condition attribute="operation" operator="eq" value="3" />
132 | <condition attribute="createdon" operator="ge" value="{0}" />
133 | <condition attribute="createdon" operator="lt" value="{1}" />
134 | <condition attribute="objecttypecode" operator="eq" value="{2}" />
135 | <condition attribute="userid" operator="eq" value="{3}" />
136 | </filter>
137 | </entity>
138 | </fetch>
139 |
140 |
141 | <fetch>
142 | <entity name="audit" >
143 | <attribute name="objecttypecodename" />
144 | <attribute name="regardingobjectid" />
145 | <attribute name="regardingobjectidname" />
146 | <attribute name="createdon" />
147 | <attribute name="userid" />
148 | <attribute name="objectid" />
149 | <attribute name="auditid" />
150 | <attribute name="objecttypecode" />
151 | <attribute name="actionname" />
152 | <attribute name="action" />
153 | <attribute name="objectidname" />
154 | <filter type="and" >
155 | <condition attribute="operation" operator="eq" value="3" />
156 | <condition attribute="createdon" operator="ge" value="{0}" />
157 | <condition attribute="createdon" operator="lt" value="{1}" />
158 | <condition attribute="objecttypecode" operator="eq" value="{2}" />
159 | </filter>
160 | </entity>
161 | </fetch>
162 |
163 |
164 | <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" >
165 | <entity name="systemuser" >
166 | <attribute name="fullname" />
167 | <attribute name="systemuserid" />
168 | <filter type="and" >
169 | <condition attribute="isdisabled" operator="eq" value="0" />
170 | <condition attribute="accessmode" operator="eq" value="0" />
171 | </filter>
172 | <order attribute="fullname" />
173 | </entity>
174 | </fetch>
175 |
176 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Model/AuditItem.cs:
--------------------------------------------------------------------------------
1 | /*
2 | MIT License
3 |
4 | Copyright (c) 2019 Tech Quantum
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 | */
24 |
25 | namespace BDK.XrmToolBox.RecycleBin.Model
26 | {
27 | using Microsoft.Crm.Sdk.Messages;
28 | using Microsoft.Xrm.Sdk.Metadata;
29 | using System;
30 |
31 | ///
32 | /// Instance of audit item entry
33 | ///
34 | internal class AuditItem
35 | {
36 | ///
37 | /// Gets or sets the audit identifier.
38 | ///
39 | ///
40 | /// The audit identifier.
41 | ///
42 | public Guid AuditId { get; set; }
43 |
44 | ///
45 | /// Gets or sets the record identifier.
46 | ///
47 | ///
48 | /// The record identifier.
49 | ///
50 | public Guid RecordId { get; set; }
51 |
52 | ///
53 | /// Gets or sets the name.
54 | ///
55 | ///
56 | /// The name.
57 | ///
58 | public string Name { get; set; }
59 |
60 | ///
61 | /// Gets or sets the entity.
62 | ///
63 | ///
64 | /// The entity.
65 | ///
66 | public string Entity { get; set; }
67 |
68 | ///
69 | /// Gets or sets the metadata.
70 | ///
71 | ///
72 | /// The metadata.
73 | ///
74 | public EntityMetadata Metadata { get; set; }
75 |
76 | ///
77 | /// Gets or sets the deletion date.
78 | ///
79 | ///
80 | /// The deletion date.
81 | ///
82 | public DateTime DeletionDate { get; set; }
83 |
84 | ///
85 | /// Gets or sets the deleted by date in string format.
86 | ///
87 | ///
88 | /// The deleted by.
89 | ///
90 | public string DeletedBy { get; set; }
91 |
92 | ///
93 | /// Gets or sets the audit detail.
94 | ///
95 | ///
96 | /// The audit detail.
97 | ///
98 | public AttributeAuditDetail AuditDetail { get; set; }
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Model/DeletedField.cs:
--------------------------------------------------------------------------------
1 | /*
2 | MIT License
3 |
4 | Copyright (c) 2019 Tech Quantum
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 | */
24 |
25 | namespace BDK.XrmToolBox.RecycleBin.Model
26 | {
27 | ///
28 | /// Class for deleted field tracking
29 | ///
30 | internal class DeletedField
31 | {
32 | ///
33 | /// Gets or sets the name of the field.
34 | ///
35 | ///
36 | /// The name of the field.
37 | ///
38 | public string FieldName { get; set; }
39 |
40 | ///
41 | /// Gets or sets the value.
42 | ///
43 | ///
44 | /// The value.
45 | ///
46 | public object Value { get; set; }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/PluginControl.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | True
125 |
126 |
127 | 122, 17
128 |
129 |
130 | 532, 17
131 |
132 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Recycle Bin")]
9 | [assembly: AssemblyDescription("Review and restore the deleted records for entities with auditing enabled")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Deepak Battini")]
12 | [assembly: AssemblyProduct("BDK.XrmToolBox.RecycleBin")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("8d2c8bfc-9031-4a03-8e65-540cd27c5b7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.2023.11.0")]
36 | [assembly: AssemblyFileVersion("1.2021.11.0")]
37 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Properties/DataSources/BDK.XrmToolBox.RecycleBin.Model.AuditItem.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.RecycleBin.Model.AuditItem, BDK.XrmToolBox.RecycleBin, Version=1.2016.11.1, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Properties/DataSources/BDK.XrmToolBox.RecycleBin.Model.DeletedField.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.RecycleBin.Model.DeletedField, BDK.XrmToolBox.RecycleBin, Version=1.2016.11.1, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.RecycleBin.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.RecycleBin.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap Delete {
67 | get {
68 | object obj = ResourceManager.GetObject("Delete", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap Refresh {
77 | get {
78 | object obj = ResourceManager.GetObject("Refresh", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap StepEnabled {
87 | get {
88 | object obj = ResourceManager.GetObject("StepEnabled", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\Refresh.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\Delete.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\StepEnabled.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/Delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/Delete.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/Refresh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/Refresh.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/StepEnabled.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/Resources/StepEnabled.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.RecycleBin/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/PluginControl.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Reduce Storage Space Usage")]
9 | [assembly: AssemblyDescription("Check and manage storage usage and clean-up")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Deepak Battini")]
12 | [assembly: AssemblyProduct("BDK.XrmToolBox.StorageCleaner")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("0d801ae5-c241-4c37-8649-c71ca8f95409")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.2023.11.0")]
36 | [assembly: AssemblyFileVersion("1.2023.11.0")]
37 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.StorageCleaner.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.StorageCleaner.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap Delete {
67 | get {
68 | object obj = ResourceManager.GetObject("Delete", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap PluginProfile {
77 | get {
78 | object obj = ResourceManager.GetObject("PluginProfile", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap Refresh {
87 | get {
88 | object obj = ResourceManager.GetObject("Refresh", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\Refresh.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\Delete.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\PluginProfile.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/Delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/Delete.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/PluginProfile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/PluginProfile.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/Refresh.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Resources/Refresh.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.StorageCleaner {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Settings {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Settings() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.StorageCleaner.Settings", typeof(Settings).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to <fetch version="1.0" {1}>
65 | /// <entity name="audit" >
66 | /// <attribute name="auditid" />
67 | /// <filter>
68 | /// <condition attribute="createdon" operator="olderthan-x-months" value="{0}" />
69 | /// </filter>
70 | /// </entity>
71 | ///</fetch>.
72 | ///
73 | internal static string FetchXml_Audit {
74 | get {
75 | return ResourceManager.GetString("FetchXml_Audit", resourceCulture);
76 | }
77 | }
78 |
79 | ///
80 | /// Looks up a localized string similar to <fetch version="1.0" {1}>
81 | /// <entity name="asyncoperation" >
82 | /// <attribute name="asyncoperationid" />
83 | /// <filter type="and" >
84 | /// <condition attribute="operationtype" operator="eq" value="13" />
85 | /// <condition attribute="statuscode" operator="eq" value="30" />
86 | /// <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
87 | /// </filter>
88 | /// </entity>
89 | ///</fetch>.
90 | ///
91 | internal static string FetchXml_BulkDelete {
92 | get {
93 | return ResourceManager.GetString("FetchXml_BulkDelete", resourceCulture);
94 | }
95 | }
96 |
97 | ///
98 | /// Looks up a localized string similar to <fetch version="1.0" {1}>
99 | /// <entity name="asyncoperation" >
100 | /// <attribute name="asyncoperationid" />
101 | /// <filter type="and" >
102 | /// <condition attribute="operationtype" operator="in" >
103 | /// <value>2</value>
104 | /// <value>10</value>
105 | /// </condition>
106 | /// <condition attribute="statuscode" operator="eq" value="30" />
107 | /// <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
108 | /// </filter>
109 | /// </entity>
110 | ///</fetch>.
111 | ///
112 | internal static string FetchXml_BulkEmailAndWorkflow {
113 | get {
114 | return ResourceManager.GetString("FetchXml_BulkEmailAndWorkflow", resourceCulture);
115 | }
116 | }
117 |
118 | ///
119 | /// Looks up a localized string similar to <fetch version="1.0" {1} >
120 | /// <entity name="asyncoperation" >
121 | /// <attribute name="asyncoperationid" />
122 | /// <filter type="and" >
123 | /// <condition attribute="operationtype" operator="eq" value="5" />
124 | /// <condition attribute="statuscode" operator="eq" value="30" />
125 | /// <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
126 | /// </filter>
127 | /// </entity>
128 | ///</fetch>.
129 | ///
130 | internal static string FetchXml_BulkImport {
131 | get {
132 | return ResourceManager.GetString("FetchXml_BulkImport", resourceCulture);
133 | }
134 | }
135 |
136 | ///
137 | /// Looks up a localized string similar to <fetch version="1.0" {2}>
138 | /// <entity name="email" >
139 | /// <attribute name="activityid" />
140 | /// <filter type="and" >
141 | /// <condition attribute="createdon" value="{0}" operator="olderthan-x-months" />
142 | /// </filter>
143 | /// <link-entity name="activitymimeattachment" from="objectid" to="activityid" alias="ac" >
144 | /// <filter type="and" >
145 | /// <condition attribute="filesize" operator="gt" value="{1}" />
146 | /// </filter>
147 | /// </link-entity>
148 | /// </entity>
149 | ///</fetch>.
150 | ///
151 | internal static string FetchXml_EmailWithAttachements {
152 | get {
153 | return ResourceManager.GetString("FetchXml_EmailWithAttachements", resourceCulture);
154 | }
155 | }
156 |
157 | ///
158 | /// Looks up a localized string similar to <fetch version="1.0" {2} >
159 | /// <entity name="annotation" >
160 | /// <attribute name="annotationid" />
161 | /// <filter type="and" >
162 | /// <condition attribute="filesize" operator="gt" value="{1}" />
163 | /// <condition attribute="createdon" operator="olderthan-x-months" value="{0}" />
164 | /// </filter>
165 | /// </entity>
166 | ///</fetch>.
167 | ///
168 | internal static string FetchXml_NotesWithAttachments {
169 | get {
170 | return ResourceManager.GetString("FetchXml_NotesWithAttachments", resourceCulture);
171 | }
172 | }
173 |
174 | ///
175 | /// Looks up a localized string similar to <fetch version="1.0" {1} >
176 | /// <entity name="asyncoperation" >
177 | /// <attribute name="asyncoperationid"/>
178 | /// <filter type="and" >
179 | /// <condition attribute="operationtype" operator="in" >
180 | /// <value>10</value>
181 | /// </condition>
182 | /// <condition attribute="statuscode" operator="eq" value="10" />
183 | /// <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
184 | /// </filter>
185 | /// </entity>
186 | ///</fetch>.
187 | ///
188 | internal static string FetchXml_SuspendedWorkflow {
189 | get {
190 | return ResourceManager.GetString("FetchXml_SuspendedWorkflow", resourceCulture);
191 | }
192 | }
193 | }
194 | }
195 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/Settings.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | <fetch version="1.0" {1}>
122 | <entity name="audit" >
123 | <attribute name="auditid" />
124 | <filter>
125 | <condition attribute="createdon" operator="olderthan-x-months" value="{0}" />
126 | </filter>
127 | </entity>
128 | </fetch>
129 |
130 |
131 | <fetch version="1.0" {1}>
132 | <entity name="asyncoperation" >
133 | <attribute name="asyncoperationid" />
134 | <filter type="and" >
135 | <condition attribute="operationtype" operator="eq" value="13" />
136 | <condition attribute="statuscode" operator="eq" value="30" />
137 | <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
138 | </filter>
139 | </entity>
140 | </fetch>
141 |
142 |
143 | <fetch version="1.0" {1}>
144 | <entity name="asyncoperation" >
145 | <attribute name="asyncoperationid" />
146 | <filter type="and" >
147 | <condition attribute="operationtype" operator="in" >
148 | <value>2</value>
149 | <value>10</value>
150 | </condition>
151 | <condition attribute="statuscode" operator="eq" value="30" />
152 | <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
153 | </filter>
154 | </entity>
155 | </fetch>
156 | \
157 |
158 |
159 | <fetch version="1.0" {1} >
160 | <entity name="asyncoperation" >
161 | <attribute name="asyncoperationid" />
162 | <filter type="and" >
163 | <condition attribute="operationtype" operator="eq" value="5" />
164 | <condition attribute="statuscode" operator="eq" value="30" />
165 | <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
166 | </filter>
167 | </entity>
168 | </fetch>
169 |
170 |
171 | <fetch version="1.0" {2}>
172 | <entity name="email" >
173 | <attribute name="activityid" />
174 | <filter type="and" >
175 | <condition attribute="createdon" value="{0}" operator="olderthan-x-months" />
176 | </filter>
177 | <link-entity name="activitymimeattachment" from="objectid" to="activityid" alias="ac" >
178 | <filter type="and" >
179 | <condition attribute="filesize" operator="gt" value="{1}" />
180 | </filter>
181 | </link-entity>
182 | </entity>
183 | </fetch>
184 |
185 |
186 | <fetch version="1.0" {2} >
187 | <entity name="annotation" >
188 | <attribute name="annotationid" />
189 | <filter type="and" >
190 | <condition attribute="filesize" operator="gt" value="{1}" />
191 | <condition attribute="createdon" operator="olderthan-x-months" value="{0}" />
192 | </filter>
193 | </entity>
194 | </fetch>
195 |
196 |
197 | <fetch version="1.0" {1} >
198 | <entity name="asyncoperation" >
199 | <attribute name="asyncoperationid"/>
200 | <filter type="and" >
201 | <condition attribute="operationtype" operator="in" >
202 | <value>10</value>
203 | </condition>
204 | <condition attribute="statuscode" operator="eq" value="10" />
205 | <condition attribute="completedon" operator="olderthan-x-months" value="{0}" />
206 | </filter>
207 | </entity>
208 | </fetch>
209 |
210 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.StorageCleaner/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/InactiveUsers.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace BDK.XrmToolBox.UserAuditViewer
2 | {
3 | partial class InactiveUsers
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.showInactiveUsers1 = new BDK.XrmToolBox.UserAuditViewer.ShowInactiveUsers();
32 | this.SuspendLayout();
33 | //
34 | // showInactiveUsers1
35 | //
36 | this.showInactiveUsers1.ConnectionDetail = null;
37 | this.showInactiveUsers1.Location = new System.Drawing.Point(2, 9);
38 | this.showInactiveUsers1.Name = "showInactiveUsers1";
39 | this.showInactiveUsers1.OrgService = null;
40 | this.showInactiveUsers1.Size = new System.Drawing.Size(846, 493);
41 | this.showInactiveUsers1.TabIndex = 0;
42 | //
43 | // InactiveUsers
44 | //
45 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
46 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
47 | this.ClientSize = new System.Drawing.Size(881, 510);
48 | this.Controls.Add(this.showInactiveUsers1);
49 | this.Name = "InactiveUsers";
50 | this.Text = "Show In-Active Users";
51 | this.ResumeLayout(false);
52 |
53 | }
54 |
55 | #endregion
56 |
57 | private ShowInactiveUsers showInactiveUsers1;
58 | }
59 | }
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/InactiveUsers.cs:
--------------------------------------------------------------------------------
1 | /*
2 | MIT License
3 |
4 | Copyright (c) 2019 Tech Quantum
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 | */
24 |
25 |
26 | namespace BDK.XrmToolBox.UserAuditViewer
27 | {
28 | using System.Windows.Forms;
29 | using Microsoft.Xrm.Sdk;
30 |
31 | ///
32 | /// Inactive user list form
33 | ///
34 | ///
35 | public partial class InactiveUsers : Form
36 | {
37 | ///
38 | /// Initializes a new instance of the class.
39 | ///
40 | public InactiveUsers()
41 | {
42 | InitializeComponent();
43 | }
44 |
45 | ///
46 | /// Initializes a new instance of the class.
47 | ///
48 | /// The service.
49 | public InactiveUsers(IOrganizationService service)
50 | {
51 | InitializeComponent();
52 | this.showInactiveUsers1.OrgService = service;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/InactiveUsers.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Model/AuditLog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace BDK.XrmToolBox.UserAuditViewer.Model
8 | {
9 | public class AuditUserLogin
10 | {
11 | public string Id { get; set; }
12 |
13 | public string Name { get; set; }
14 |
15 | public string LoginDate { get; set; }
16 |
17 | public string LoginTime { get; set; }
18 |
19 | public DateTime LoginDateTime { get; set; }
20 | }
21 |
22 | public class AuditTransaction
23 | {
24 | public string Id { get; set; }
25 |
26 | public string EntityName { get; set; }
27 |
28 | public string Record { get; set; }
29 |
30 | public string Date { get; set; }
31 |
32 | public string Operation { get; set; }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Model/CRMUser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace BDK.XrmToolBox.UserAuditViewer.Model
8 | {
9 | public class CRMUser
10 | {
11 | public string Id { get; set; }
12 |
13 | public string Name { get; set; }
14 |
15 | public string Username { get; set; }
16 |
17 | public string Title { get; set; }
18 |
19 | public string PrimaryEmail { get; set; }
20 |
21 | public string BusinessUnit { get; set; }
22 |
23 | public DateTime LastLoggedIn { get; set; }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/PluginControl.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 122, 17
125 |
126 |
127 | 122, 17
128 |
129 |
130 | 301, 17
131 |
132 |
133 | 301, 17
134 |
135 |
136 | 514, 17
137 |
138 |
139 | 514, 17
140 |
141 |
142 | 735, 17
143 |
144 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("User Login Audit")]
9 | [assembly: AssemblyDescription("User Login Audit for XRMToolBox")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Deepak Battini")]
12 | [assembly: AssemblyProduct("BDK.XrmToolBox.UserAuditViewer")]
13 | [assembly: AssemblyCopyright("Copyright © 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("2573ed2c-8eb7-4bc8-b17f-20ab255802ad")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("2.2023.11.0")]
36 | [assembly: AssemblyFileVersion("2.2023.11.0")]
37 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/DataSources/BDK.XrmToolBox.UserManagement.Model.AuditTransaction.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.UserAuditViewer.Model.AuditTransaction, BDK.XrmToolBox.UserAuditViewer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/DataSources/BDK.XrmToolBox.UserManagement.Model.AuditUserLogin.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.UserAuditViewer.Model.AuditUserLogin, BDK.XrmToolBox.UserAuditViewer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/DataSources/BDK.XrmToolBox.UserManagement.Model.CRMUser.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.UserAuditViewer.Model.CRMUser, BDK.XrmToolBox.UserAuditViewer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/DataSources/BDK.XrmToolBox.UserManagement.Model.LoginLog.datasource:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | BDK.XrmToolBox.UserAuditViewer.Model.LoginLog, BDK.XrmToolBox.UserAuditViewer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
10 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.UserAuditViewer.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.UserAuditViewer.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap AssemblySelected {
67 | get {
68 | object obj = ResourceManager.GetObject("AssemblySelected", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap Delete {
77 | get {
78 | object obj = ResourceManager.GetObject("Delete", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap Organization {
87 | get {
88 | object obj = ResourceManager.GetObject("Organization", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap UninstallProfiler {
97 | get {
98 | object obj = ResourceManager.GetObject("UninstallProfiler", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\Delete.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\AssemblySelected.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\UninstallProfiler.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\Resources\Organization.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Readme.MD:
--------------------------------------------------------------------------------
1 | ## Created and Managed By: [Deepak Kumar Batini](https://au.linkedin.com/in/bdeepakkumar)
2 |
3 | # Purpose of User Audit Viewer
4 |
5 | * View the login history of the user.
6 | * View what all the transaction activity performed by the user
7 | * View the inactive user list who haven't logged in CRM from past 1/3/6/12 months
8 | * Ability to export the audit data and inactive user list for reporting purpose
9 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/AssemblySelected.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/AssemblySelected.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/Delete.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/Delete.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/Organization.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/Organization.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/UninstallProfiler.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Resources/UninstallProfiler.gif
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace BDK.XrmToolBox.UserAuditViewer {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Settings {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Settings() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BDK.XrmToolBox.UserAuditViewer.Settings", typeof(Settings).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to <fetch>
65 | /// <entity name="systemuser" >
66 | /// <all-attributes/>
67 | /// <filter type="and" >
68 | /// <condition attribute="isdisabled" operator="eq" value="0" />
69 | /// <condition attribute="accessmode" operator="eq" value="0" />
70 | /// </filter>
71 | /// </entity>
72 | ///</fetch>.
73 | ///
74 | internal static string FetchXml_EnabledUsers {
75 | get {
76 | return ResourceManager.GetString("FetchXml_EnabledUsers", resourceCulture);
77 | }
78 | }
79 |
80 | ///
81 | /// Looks up a localized string similar to <fetch count="1" >
82 | /// <entity name="audit" >
83 | /// <attribute name="createdon" />
84 | /// <filter>
85 | /// <condition attribute="operation" operator="eq" value="4" />
86 | /// <condition attribute="objectid" operator="eq" value="{0}" />
87 | /// </filter>
88 | /// <order attribute="createdon" descending="true" />
89 | /// </entity>
90 | ///</fetch>.
91 | ///
92 | internal static string FetchXml_LastLoginCheck {
93 | get {
94 | return ResourceManager.GetString("FetchXml_LastLoginCheck", resourceCulture);
95 | }
96 | }
97 |
98 | ///
99 | /// Looks up a localized string similar to <fetch count="50" page="{1}" paging-cookie="{2}" returntotalrecordcount="true" >
100 | /// <entity name="audit" >
101 | /// <all-attributes/>
102 | /// <filter>
103 | /// <condition attribute="operation" operator="eq" value="4" />
104 | /// <condition attribute="objectid" operator="eq" value="{0}" />
105 | /// <condition attribute="createdon" operator="ge" value="{3}" />
106 | /// <condition attribute="createdon" operator="le" value="{4}" />
107 | ///
108 | /// </filter>
109 | /// <order attribute="createdon" descending="true" />
110 | /// </entity>
111 | ///</fetch>.
112 | ///
113 | internal static string FetchXml_UserLogin {
114 | get {
115 | return ResourceManager.GetString("FetchXml_UserLogin", resourceCulture);
116 | }
117 | }
118 |
119 | ///
120 | /// Looks up a localized string similar to <fetch count="50" page="{1}" paging-cookie="{2}" returntotalrecordcount="true">
121 | /// <entity name="audit" >
122 | /// <all-attributes/>
123 | /// <filter>
124 | /// <condition attribute="operation" operator="neq" value="4" />
125 | /// <condition attribute="userid" operator="eq" value="{0}" />
126 | /// <condition attribute="createdon" operator="ge" value="{3}" />
127 | /// <condition attribute="createdon" operator="le" value="{4}" />
128 | ///
129 | /// </filter>
130 | /// <order attribute="createdon" descending="true" />
131 | /// </entity>
132 | ///</fetch>.
133 | ///
134 | internal static string FetchXml_UserTransactions {
135 | get {
136 | return ResourceManager.GetString("FetchXml_UserTransactions", resourceCulture);
137 | }
138 | }
139 |
140 | ///
141 | /// Looks up a localized string similar to <fetch>
142 | /// <entity name="savedquery" >
143 | /// <attribute name="name" />
144 | /// <attribute name="savedqueryid" />
145 | /// <attribute name="isdefault" />
146 | /// <filter type="and" >
147 | /// <condition attribute="returnedtypecode" operator="eq" value="8" />
148 | /// <condition attribute="querytype" operator="eq" value="0" />
149 | /// </filter>
150 | /// </entity>
151 | ///</fetch>.
152 | ///
153 | internal static string FetchXml_UserViews {
154 | get {
155 | return ResourceManager.GetString("FetchXml_UserViews", resourceCulture);
156 | }
157 | }
158 | }
159 | }
160 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/Settings.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | <fetch>
122 | <entity name="systemuser" >
123 | <all-attributes/>
124 | <filter type="and" >
125 | <condition attribute="isdisabled" operator="eq" value="0" />
126 | <condition attribute="accessmode" operator="eq" value="0" />
127 | </filter>
128 | </entity>
129 | </fetch>
130 |
131 |
132 | <fetch count="1" >
133 | <entity name="audit" >
134 | <attribute name="createdon" />
135 | <filter>
136 | <condition attribute="operation" operator="eq" value="4" />
137 | <condition attribute="objectid" operator="eq" value="{0}" />
138 | </filter>
139 | <order attribute="createdon" descending="true" />
140 | </entity>
141 | </fetch>
142 |
143 |
144 | <fetch count="50" page="{1}" paging-cookie="{2}" returntotalrecordcount="true" >
145 | <entity name="audit" >
146 | <all-attributes/>
147 | <filter>
148 | <condition attribute="operation" operator="eq" value="4" />
149 | <condition attribute="objectid" operator="eq" value="{0}" />
150 | <condition attribute="createdon" operator="ge" value="{3}" />
151 | <condition attribute="createdon" operator="le" value="{4}" />
152 |
153 | </filter>
154 | <order attribute="createdon" descending="true" />
155 | </entity>
156 | </fetch>
157 |
158 |
159 | <fetch count="50" page="{1}" paging-cookie="{2}" returntotalrecordcount="true">
160 | <entity name="audit" >
161 | <all-attributes/>
162 | <filter>
163 | <condition attribute="operation" operator="neq" value="4" />
164 | <condition attribute="userid" operator="eq" value="{0}" />
165 | <condition attribute="createdon" operator="ge" value="{3}" />
166 | <condition attribute="createdon" operator="le" value="{4}" />
167 |
168 | </filter>
169 | <order attribute="createdon" descending="true" />
170 | </entity>
171 | </fetch>
172 |
173 |
174 | <fetch>
175 | <entity name="savedquery" >
176 | <attribute name="name" />
177 | <attribute name="savedqueryid" />
178 | <attribute name="isdefault" />
179 | <filter type="and" >
180 | <condition attribute="returnedtypecode" operator="eq" value="8" />
181 | <condition attribute="querytype" operator="eq" value="0" />
182 | </filter>
183 | </entity>
184 | </fetch>
185 |
186 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/ShowInactiveUsers.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace BDK.XrmToolBox.UserAuditViewer
2 | {
3 | partial class ShowInactiveUsers
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.GridUsers = new System.Windows.Forms.DataGridView();
33 | this.label1 = new System.Windows.Forms.Label();
34 | this.ddlFilter = new System.Windows.Forms.ComboBox();
35 | this.btnExport = new System.Windows.Forms.Button();
36 | this.saveFile = new System.Windows.Forms.SaveFileDialog();
37 | this.cRMUserBindingSource = new System.Windows.Forms.BindingSource(this.components);
38 | this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
39 | this.usernameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
40 | this.titleDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
41 | this.primaryEmailDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
42 | this.businessUnitDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
43 | this.lastLoggedInDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
44 | ((System.ComponentModel.ISupportInitialize)(this.GridUsers)).BeginInit();
45 | ((System.ComponentModel.ISupportInitialize)(this.cRMUserBindingSource)).BeginInit();
46 | this.SuspendLayout();
47 | //
48 | // GridUsers
49 | //
50 | this.GridUsers.AllowUserToAddRows = false;
51 | this.GridUsers.AllowUserToDeleteRows = false;
52 | this.GridUsers.AutoGenerateColumns = false;
53 | this.GridUsers.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
54 | this.GridUsers.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
55 | this.GridUsers.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
56 | this.GridUsers.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
57 | this.nameDataGridViewTextBoxColumn,
58 | this.usernameDataGridViewTextBoxColumn,
59 | this.titleDataGridViewTextBoxColumn,
60 | this.primaryEmailDataGridViewTextBoxColumn,
61 | this.businessUnitDataGridViewTextBoxColumn,
62 | this.lastLoggedInDataGridViewTextBoxColumn});
63 | this.GridUsers.DataSource = this.cRMUserBindingSource;
64 | this.GridUsers.Location = new System.Drawing.Point(59, 88);
65 | this.GridUsers.Name = "GridUsers";
66 | this.GridUsers.ReadOnly = true;
67 | this.GridUsers.Size = new System.Drawing.Size(728, 360);
68 | this.GridUsers.TabIndex = 5;
69 | //
70 | // label1
71 | //
72 | this.label1.AutoSize = true;
73 | this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
74 | this.label1.Location = new System.Drawing.Point(58, 40);
75 | this.label1.Name = "label1";
76 | this.label1.Size = new System.Drawing.Size(169, 17);
77 | this.label1.TabIndex = 4;
78 | this.label1.Text = "Show users inactive from:";
79 | //
80 | // ddlFilter
81 | //
82 | this.ddlFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
83 | this.ddlFilter.FormattingEnabled = true;
84 | this.ddlFilter.Items.AddRange(new object[] {
85 | "Past 1 month",
86 | "Past 3 months",
87 | "Past 6 months",
88 | "Past 12 months"});
89 | this.ddlFilter.Location = new System.Drawing.Point(233, 40);
90 | this.ddlFilter.Name = "ddlFilter";
91 | this.ddlFilter.Size = new System.Drawing.Size(267, 21);
92 | this.ddlFilter.TabIndex = 3;
93 | this.ddlFilter.SelectedIndexChanged += new System.EventHandler(this.ddlFilter_SelectedIndexChanged);
94 | //
95 | // btnExport
96 | //
97 | this.btnExport.Image = global::BDK.XrmToolBox.UserAuditViewer.Properties.Resources.UninstallProfiler;
98 | this.btnExport.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
99 | this.btnExport.Location = new System.Drawing.Point(671, 38);
100 | this.btnExport.Name = "btnExport";
101 | this.btnExport.Size = new System.Drawing.Size(116, 23);
102 | this.btnExport.TabIndex = 6;
103 | this.btnExport.Text = "Export to Excel";
104 | this.btnExport.UseVisualStyleBackColor = true;
105 | this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
106 | //
107 | // saveFile
108 | //
109 | this.saveFile.Filter = "Excel files (*.xls)|*.xlsx";
110 | //
111 | // cRMUserBindingSource
112 | //
113 | this.cRMUserBindingSource.DataSource = typeof(BDK.XrmToolBox.UserAuditViewer.Model.CRMUser);
114 | //
115 | // nameDataGridViewTextBoxColumn
116 | //
117 | this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
118 | this.nameDataGridViewTextBoxColumn.HeaderText = "Name";
119 | this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
120 | this.nameDataGridViewTextBoxColumn.ReadOnly = true;
121 | //
122 | // usernameDataGridViewTextBoxColumn
123 | //
124 | this.usernameDataGridViewTextBoxColumn.DataPropertyName = "Username";
125 | this.usernameDataGridViewTextBoxColumn.HeaderText = "Username";
126 | this.usernameDataGridViewTextBoxColumn.Name = "usernameDataGridViewTextBoxColumn";
127 | this.usernameDataGridViewTextBoxColumn.ReadOnly = true;
128 | //
129 | // titleDataGridViewTextBoxColumn
130 | //
131 | this.titleDataGridViewTextBoxColumn.DataPropertyName = "Title";
132 | this.titleDataGridViewTextBoxColumn.HeaderText = "Title";
133 | this.titleDataGridViewTextBoxColumn.Name = "titleDataGridViewTextBoxColumn";
134 | this.titleDataGridViewTextBoxColumn.ReadOnly = true;
135 | //
136 | // primaryEmailDataGridViewTextBoxColumn
137 | //
138 | this.primaryEmailDataGridViewTextBoxColumn.DataPropertyName = "PrimaryEmail";
139 | this.primaryEmailDataGridViewTextBoxColumn.HeaderText = "Email";
140 | this.primaryEmailDataGridViewTextBoxColumn.Name = "primaryEmailDataGridViewTextBoxColumn";
141 | this.primaryEmailDataGridViewTextBoxColumn.ReadOnly = true;
142 | //
143 | // businessUnitDataGridViewTextBoxColumn
144 | //
145 | this.businessUnitDataGridViewTextBoxColumn.DataPropertyName = "BusinessUnit";
146 | this.businessUnitDataGridViewTextBoxColumn.HeaderText = "Business Unit";
147 | this.businessUnitDataGridViewTextBoxColumn.Name = "businessUnitDataGridViewTextBoxColumn";
148 | this.businessUnitDataGridViewTextBoxColumn.ReadOnly = true;
149 | //
150 | // lastLoggedInDataGridViewTextBoxColumn
151 | //
152 | this.lastLoggedInDataGridViewTextBoxColumn.DataPropertyName = "LastLoggedIn";
153 | this.lastLoggedInDataGridViewTextBoxColumn.HeaderText = "Last Log In";
154 | this.lastLoggedInDataGridViewTextBoxColumn.Name = "lastLoggedInDataGridViewTextBoxColumn";
155 | this.lastLoggedInDataGridViewTextBoxColumn.ReadOnly = true;
156 | //
157 | // ShowInactiveUsers
158 | //
159 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
160 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
161 | this.Controls.Add(this.btnExport);
162 | this.Controls.Add(this.GridUsers);
163 | this.Controls.Add(this.label1);
164 | this.Controls.Add(this.ddlFilter);
165 | this.Name = "ShowInactiveUsers";
166 | this.Size = new System.Drawing.Size(846, 493);
167 | ((System.ComponentModel.ISupportInitialize)(this.GridUsers)).EndInit();
168 | ((System.ComponentModel.ISupportInitialize)(this.cRMUserBindingSource)).EndInit();
169 | this.ResumeLayout(false);
170 | this.PerformLayout();
171 |
172 | }
173 |
174 | #endregion
175 |
176 | private System.Windows.Forms.DataGridView GridUsers;
177 | private System.Windows.Forms.BindingSource cRMUserBindingSource;
178 | private System.Windows.Forms.Label label1;
179 | private System.Windows.Forms.ComboBox ddlFilter;
180 | private System.Windows.Forms.Button btnExport;
181 | private System.Windows.Forms.SaveFileDialog saveFile;
182 | private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
183 | private System.Windows.Forms.DataGridViewTextBoxColumn usernameDataGridViewTextBoxColumn;
184 | private System.Windows.Forms.DataGridViewTextBoxColumn titleDataGridViewTextBoxColumn;
185 | private System.Windows.Forms.DataGridViewTextBoxColumn primaryEmailDataGridViewTextBoxColumn;
186 | private System.Windows.Forms.DataGridViewTextBoxColumn businessUnitDataGridViewTextBoxColumn;
187 | private System.Windows.Forms.DataGridViewTextBoxColumn lastLoggedInDataGridViewTextBoxColumn;
188 | }
189 | }
190 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/ShowInactiveUsers.cs:
--------------------------------------------------------------------------------
1 | /*
2 | MIT License
3 |
4 | Copyright (c) 2019 Tech Quantum
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 | */
24 |
25 |
26 | namespace BDK.XrmToolBox.UserAuditViewer
27 | {
28 | using System;
29 | using System.Collections.Generic;
30 | using System.Data;
31 | using System.Linq;
32 | using System.Threading.Tasks;
33 | using System.Windows.Forms;
34 | using Microsoft.Xrm.Sdk;
35 | using Microsoft.Xrm.Sdk.Query;
36 | using BDK.XrmToolBox.UserAuditViewer.Model;
37 | using DocumentFormat.OpenXml.Packaging;
38 | using global::XrmToolBox.Extensibility;
39 |
40 | ///
41 | /// Shaoe inactive users list
42 | ///
43 | ///
44 | public partial class ShowInactiveUsers : PluginControlBase
45 | {
46 | ///
47 | /// Gets or sets the org service.
48 | ///
49 | ///
50 | /// The org service.
51 | ///
52 | public IOrganizationService OrgService { get; set; }
53 |
54 | ///
55 | /// Initializes a new instance of the class.
56 | ///
57 | public ShowInactiveUsers()
58 | {
59 | InitializeComponent();
60 | }
61 |
62 | ///
63 | /// Handles the SelectedIndexChanged event of the ddlFilter control.
64 | ///
65 | /// The source of the event.
66 | /// The instance containing the event data.
67 | private void ddlFilter_SelectedIndexChanged(object sender, EventArgs e)
68 | {
69 | var ddlFilterSelectedIndex = ddlFilter.SelectedIndex;
70 | WorkAsync(new WorkAsyncInfo
71 | {
72 | Message = "Retrieving inactive users based on login history...",
73 | Work = (w, ev) =>
74 | {
75 | FetchExpression query = new FetchExpression(Settings.FetchXml_EnabledUsers);
76 |
77 | EntityCollection entitites = OrgService.RetrieveMultiple(query);
78 | List data = new List();
79 | foreach (var item in entitites.Entities)
80 | {
81 | data.Add(new Model.CRMUser()
82 | {
83 | Username = item.Attributes.ContainsKey("domainname") ? item.Attributes["domainname"].ToString() : string.Empty,
84 | Name = item.Attributes.ContainsKey("fullname") ? item.Attributes["fullname"].ToString() : string.Empty,
85 | Id = item.Id.ToString(),
86 | BusinessUnit = item.Attributes.ContainsKey("businessunitid") ? ((EntityReference)item.Attributes["businessunitid"]).Name : string.Empty,
87 | Title = item.Attributes.ContainsKey("title") ? item.Attributes["title"].ToString() : string.Empty,
88 | PrimaryEmail = item.Attributes.ContainsKey("internalemailaddress") ? item.Attributes["internalemailaddress"].ToString() : string.Empty,
89 | });
90 | }
91 |
92 | List finalData = new List();
93 | DateTime filterDate = DateTime.Now;
94 | if (ddlFilterSelectedIndex == 0)
95 | {
96 | filterDate = filterDate.AddMonths(-1);
97 | }
98 | else if (ddlFilterSelectedIndex == 1)
99 | {
100 | filterDate = filterDate.AddMonths(-3);
101 | }
102 | else if (ddlFilterSelectedIndex == 2)
103 | {
104 | filterDate = filterDate.AddMonths(-6);
105 | }
106 | else if (ddlFilterSelectedIndex == 3)
107 | {
108 | filterDate = filterDate.AddMonths(-12);
109 | }
110 |
111 | Parallel.ForEach(data, (item) =>
112 | {
113 | FetchExpression query1 = new FetchExpression(string.Format(Settings.FetchXml_LastLoginCheck, item.Id));
114 | EntityCollection entitites1 = OrgService.RetrieveMultiple(query1);
115 | if (entitites1.Entities.Count > 0)
116 | {
117 | DateTime createdOn = (DateTime)entitites1.Entities[0]["createdon"];
118 | if (createdOn < filterDate)
119 | {
120 | item.LastLoggedIn = createdOn;
121 | finalData.Add(item);
122 | }
123 | }
124 | });
125 |
126 | ev.Result = finalData.OrderBy(x=>(x.Name)).ToList();
127 | },
128 | ProgressChanged = ev =>
129 | {
130 | // If progress has to be notified to user, use the following method:
131 | SetWorkingMessage("Message to display");
132 | },
133 | PostWorkCallBack = ev =>
134 | {
135 | List result = (List)ev.Result;
136 | GridUsers.DataSource = result;
137 | },
138 | AsyncArgument = null,
139 | IsCancelable = true,
140 | MessageWidth = 340,
141 | MessageHeight = 150
142 | });
143 | }
144 |
145 | ///
146 | /// Handles the Click event of the btnExport control.
147 | ///
148 | /// The source of the event.
149 | /// The instance containing the event data.
150 | private void btnExport_Click(object sender, EventArgs e)
151 | {
152 | DataSet ds = GetDataset(GridUsers);
153 | DialogResult dialogResult = saveFile.ShowDialog();
154 | if (dialogResult.ToString() == "OK")
155 | {
156 | ExportDataSet(ds, saveFile.FileName);
157 | }
158 | }
159 |
160 | ///
161 | /// Exports the data set.
162 | ///
163 | /// The ds.
164 | /// The destination.
165 | private void ExportDataSet(DataSet ds, string destination)
166 | {
167 | using (var workbook = SpreadsheetDocument.Create(destination, DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook))
168 | {
169 | var workbookPart = workbook.AddWorkbookPart();
170 |
171 | workbook.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook();
172 |
173 | workbook.WorkbookPart.Workbook.Sheets = new DocumentFormat.OpenXml.Spreadsheet.Sheets();
174 |
175 | foreach (System.Data.DataTable table in ds.Tables)
176 | {
177 |
178 | var sheetPart = workbook.WorkbookPart.AddNewPart();
179 | var sheetData = new DocumentFormat.OpenXml.Spreadsheet.SheetData();
180 | sheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData);
181 |
182 | DocumentFormat.OpenXml.Spreadsheet.Sheets sheets = workbook.WorkbookPart.Workbook.GetFirstChild();
183 | string relationshipId = workbook.WorkbookPart.GetIdOfPart(sheetPart);
184 |
185 | uint sheetId = 1;
186 | if (sheets.Elements().Count() > 0)
187 | {
188 | sheetId =
189 | sheets.Elements().Select(s => s.SheetId.Value).Max() + 1;
190 | }
191 |
192 | DocumentFormat.OpenXml.Spreadsheet.Sheet sheet = new DocumentFormat.OpenXml.Spreadsheet.Sheet() { Id = relationshipId, SheetId = sheetId, Name = table.TableName };
193 | sheets.Append(sheet);
194 |
195 | DocumentFormat.OpenXml.Spreadsheet.Row headerRow = new DocumentFormat.OpenXml.Spreadsheet.Row();
196 |
197 | List columns = new List();
198 | foreach (System.Data.DataColumn column in table.Columns)
199 | {
200 | columns.Add(column.ColumnName);
201 |
202 | DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
203 | cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
204 | cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(column.ColumnName);
205 | headerRow.AppendChild(cell);
206 | }
207 |
208 |
209 | sheetData.AppendChild(headerRow);
210 |
211 | foreach (System.Data.DataRow dsrow in table.Rows)
212 | {
213 | DocumentFormat.OpenXml.Spreadsheet.Row newRow = new DocumentFormat.OpenXml.Spreadsheet.Row();
214 | foreach (String col in columns)
215 | {
216 | DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
217 | cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.String;
218 | cell.CellValue = new DocumentFormat.OpenXml.Spreadsheet.CellValue(dsrow[col].ToString()); //
219 | newRow.AppendChild(cell);
220 | }
221 |
222 | sheetData.AppendChild(newRow);
223 | }
224 |
225 | }
226 | }
227 | }
228 |
229 | ///
230 | /// Gets the dataset.
231 | ///
232 | /// The grid view.
233 | ///
234 | private DataSet GetDataset(DataGridView gridView)
235 | {
236 | DataSet ds = new DataSet();
237 | DataTable dt = new DataTable();
238 |
239 | // add the columns to the datatable
240 | if (gridView.Columns != null)
241 | {
242 |
243 | for (int i = 0; i < gridView.Columns.Count; i++)
244 | {
245 | dt.Columns.Add(gridView.Columns[i].DataPropertyName);
246 | }
247 | }
248 |
249 | // add each of the data rows to the table
250 | foreach (DataGridViewRow row in gridView.Rows)
251 | {
252 | DataRow dr;
253 | dr = dt.NewRow();
254 |
255 | for (int i = 0; i < row.Cells.Count; i++)
256 | {
257 | dr[i] = row.Cells[i].Value;
258 | }
259 |
260 | dt.Rows.Add(dr);
261 | }
262 |
263 | ds.Tables.Add(dt);
264 | return ds;
265 | }
266 | }
267 | }
268 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/ShowInactiveUsers.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 | 829, 17
125 |
126 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.UserAuditViewer/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/BDK.XrmToolBox.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDK.XrmToolBox.UserAuditViewer", "BDK.XrmToolBox.UserAuditViewer\BDK.XrmToolBox.UserAuditViewer.csproj", "{2573ED2C-8EB7-4BC8-B17F-20AB255802AD}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDK.XrmToolBox.StorageCleaner", "BDK.XrmToolBox.StorageCleaner\BDK.XrmToolBox.StorageCleaner.csproj", "{0D801AE5-C241-4C37-8649-C71CA8F95409}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDK.XrmToolBox.RecycleBin", "BDK.XrmToolBox.RecycleBin\BDK.XrmToolBox.RecycleBin.csproj", "{8D2C8BFC-9031-4A03-8E65-540CD27C5B7D}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {2573ED2C-8EB7-4BC8-B17F-20AB255802AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {2573ED2C-8EB7-4BC8-B17F-20AB255802AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {2573ED2C-8EB7-4BC8-B17F-20AB255802AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {2573ED2C-8EB7-4BC8-B17F-20AB255802AD}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {0D801AE5-C241-4C37-8649-C71CA8F95409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {0D801AE5-C241-4C37-8649-C71CA8F95409}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {0D801AE5-C241-4C37-8649-C71CA8F95409}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {0D801AE5-C241-4C37-8649-C71CA8F95409}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {8D2C8BFC-9031-4A03-8E65-540CD27C5B7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {8D2C8BFC-9031-4A03-8E65-540CD27C5B7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {8D2C8BFC-9031-4A03-8E65-540CD27C5B7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {8D2C8BFC-9031-4A03-8E65-540CD27C5B7D}.Release|Any CPU.Build.0 = Release|Any CPU
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | EndGlobal
35 |
--------------------------------------------------------------------------------
/BDK.XrmToolBox/DeepakProfilePic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/DeepakProfilePic.jpg
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/DocumentFormat.OpenXml.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/DocumentFormat.OpenXml.dll
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/McTools.Xrm.Connection.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/McTools.Xrm.Connection.dll
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/Microsoft.Crm.Sdk.Proxy.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/Microsoft.Crm.Sdk.Proxy.dll
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/Microsoft.Xrm.Sdk.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/Microsoft.Xrm.Sdk.dll
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/XrmToolBox.Extensibility.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/XrmToolBox.Extensibility.dll
--------------------------------------------------------------------------------
/BDK.XrmToolBox/References/XrmToolBox.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepakkumar1984/XrmToolBoxPlugins/5400548b7fdda47faa2e676ba08c3573a6a275e1/BDK.XrmToolBox/References/XrmToolBox.exe
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Tech Quantum
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # This is not maintained anymore, if you need the issue to be fixed please contact me deepakkumar1984@gmail.com for price quote. Thanks
2 |
3 |
4 |
5 | # XrmToolBox plugins
6 |
7 | Following are the plugin being offered from this repo:
8 |
9 | ## Recycle Bin
10 | The purpose of this plugin is to restore any deleted record across the CRM entities which have audit enabled.
11 | The pre-requisite is to have Auditing enabled globally and enabled per entity as well. The plugin will check and load only the entities which have audit enabled
12 |
13 |
14 | ## User Audit Viewer
15 | Audit is a very useful data to get insign of user activities. This plugin makes use of the data to give you some info of user activities for a specific date range
16 | You can get the list of users who haven't used CRM from past 1/3/6 months and free up licenses
17 | Ability to export the data to an excel
18 |
19 | ## Storage cleanup
20 | With space being used up quickly, this plugin gives an insight of most data usage across admin related entities which can be cleanup up to get some free space.
21 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-leap-day
--------------------------------------------------------------------------------