Duplicate a GA4 Property for Training Users - google-tag-manager

We have GA4 set up with GTM. We need to train the staff on using GA4, but we do not want those users in the master property playing around. To resolve this, we thought an exact duplicate property would be the solution. When creating the duplicate property, we cannot choose the same data source as the master, only create a new one. What would be the best method of duplicating the master property?

The easiest way to duplicate the property would be to use another measurement id in your tracking, effectively sending the data to one more endpoint.
However, the idea to duplicate a property to teach stuff is not reasonable. There's no reason to not allow them into the main property if you keep them at read-only permissions.
Another way to duplicate a property would be re-inserting the data through a measurement protocol, first exporting it from the original property, but, again, that's an overkill.

Related

How To Set Up Subdomains Sites In GA4?

Previously, we could just create a single property, and create multiple views to see the data on each subdomain.
Now we don't have views anymore, and after a long search, I found no replacement.
Does that mean we have to create one property per subdomain, and have no way of seeing the combined data?
Not a property for each subdomain, but a unique property, exactly as before, only instead of creating separate views you will have to create segments in the interface to isolate the information you need.
UPDATE
With GA4 360 you can separate data by subdomains or other criteria using subproperties: https://support.google.com/analytics/answer/11525732?hl=en

AX 2009: Can't find "SalesCreateReleaseOrderLineTmp" Table

I am a beginner in AX and I am trying to set access rights for some users and on a specific operation they get the error that they don't have access to the table SalesCreateReleaseOrderLineTmp. I have manually searched for this table in every category, but without success. I found on a website the full description of this table -> Order Lines - SalesCreateReleaseOrderLineTmp - ID: 995. I've search for the ID as well, but again no result. With admin rights everything is ok, but obviously not a solution.
Is there a fix location of this table and can anyone tell me where it is? :) Or is there any way to search for this table (by ID or name)?
I guess with
I have manually searched for this table in every category, but without
success
you mean you tried to find the table in the form for maintaining the user group permissions?
If so then this is due to the fact that temporary tables are hidden from that tree view as the class method SysDictTable.allowSecuritySetup is called from SysSecurity.expandSecurityKey while building the tree view and in this method there is - among other things - a check whether the table is temporary.
So essentially you have 3 options:
Give your permission group the desired access on the security key so that the group 'inherits' access to the table through it - downside of course could be to be too permissive but upside is better maintainability :)
Remove the security key on the temporary table as this in general is IMHO a wrong decision anyway. The application shouldn't restrict access to temporary tables (which are intrinsically scoped to the user session anyway) but rather force access checks in the code filling that table or even higher level processes.
Customize the code which builds the security tree view so that it includes temp. tables.
Try to apply the first option above that works for you as the first one does not need any application modification and the second one is only a simple property change which in my opinion is currently bad configured anyway. The last option should be the last resort.

Google Analytics Get Records Where Custom Dimension is Not Set

I'm using Google APIs to retrieve data from Google Analytics with a Custom Dimension. This works well; however, I also have the need to get the data that does NOT have the custom dimension set...
The way's I've seen the Custom Dimension thus far is only to show records where that dimension is set. That makes sense with the domain vocabulary; however, my case and I'm sure others will need access the other slice of the pie.
Is there any way to get a report that includes data with and without the custom dimension being set?
If not is there a way to get a report that contains data that does NOT have the dimension set?
Thanks in advance!
One way would be to report on both cases and then programmatically figure out the exclusion set.
Another (possibly simpler) way would be to always set the custom dimension to a value. The API uses the value (not set) in many dimensions for exactly this purpose. You could instantiate your tracker objects with the custom dimension initially set to (not set) and then reassign when you have a real value. That way all hits would have some value set.
As mentioned by #philip-walton, there is no way to segment on the "not defined" custom dimension bucket (or custom metric for what it's worth).
You could manually set it to (not set) prior to anything else in your code and override them with the right value when the time comes BUT that would be a big problem if you're using session or user level custom dimensions.
The principle of those dimensions is : you set them up once and forget about them.
If you set a session level custom dimension to (not set) on each page prior to sending the hit to GA, you would override this value for all the user's sessions, even for the hits prior to one one you're about to send.
You could initialize the user or session level custom dimension to (not set) but that would require a complex setup using cookies or session storage to remember not to override it if it has been set in your session / user lifetime.
Yeah, unlike adobe analytics which provides a (none) bucket for all cases where a dimension was not set, GA only reports back on the cases where it was set. In the interface you can more readily see % of sessions addressed by the data, but via the API there is no "all other" dimension.
If you give me your precise use case I can try and think of a workaround using segmentation or something else.
Jeff

Risks to database and front-end coupling

I could not come up with any better title, after reading the question you can suggest a better one. Also you can suggest some better tags, I could not find web-development.
I am a student so I don't know the standard way to achieve the following issue.
I usually set the IDs of elements (div,span,tr,etc) according to the database primary key to reference it later easily.
For example on page having some rows of entries having their id set to the sno in the DB which is primary key and on click on any row checking the id and display the result from database using that id.
But I think its a bad idea as anyone can use Inspect Element or Dev Tools and change the ID.
What is the standard way to achieve this?
EDIT 1
I know that web browser wont enforce the security policy for me that's why I am asking for the standard way, or standard practices to use for this matter.
Anyway, you must assume that any request that comes to the back end may be forged, any any data sent to browser (visible or hidden) is public.
If you considere the the id are private (rather uncommon requirement), you could instead simply use a row order and keep on server session a table row_order <-> id.
If you simply want to ensure that the id are correct, just control them (server side) before updating the database, or at the time of the database write if you cannot control them before.
If you want to enforce any other policy (users have roles and depending on roles are allowed or not to update some values) all those controls have to be done server side.

Firebase security for things like indexes

I'm looking at using firebase for a small project, but one stumbling block I can't find an answer to is that of security as it relates to things like indexes for a purely client side application.
For example, if I need an index for articles -- that is, not using priority -- for alternate sorting, how would I secure this?
The client would need access to the list that contains the article ids sorted appropriately, which as far as I can tell also means the client can then be malicious and completely reorder or delete that index, not just the article it posted.
For that matter, the same goes for setting priority, or really any kind of auxiliary data that is automatic and not user entered - a change date for example.
Am I missing something? Or are you forced to have a server component to accomplish that level of data security/integrity?
Edit: The simplest case of this I can think of, is something like a date created field on an article - What prevents the client from just setting that maliciously?

Resources