|
POST
|
When you overwrite a feature layer (federated, not hosted) with Pro, does a new item get created?...or does the existing item get retained? If a new item is created, how are you supposed to keep feature layer sources within a web map?...doesn't this essentially break a data source within the web map?
... View more
10-15-2018
09:54 AM
|
0
|
3
|
4560
|
|
BLOG
|
The vast majority of our replication processes are one-way replicas, where we are using geodatabase replication as a means of moving production data to replicated databases used for read-only users and web services. We like the idea of having a production editing environment with a small number of users. This allows us to easily make schema changes when necessary, and have it only affect a small number of users. We don't have to notify our read-only users, and we don't have to drop connections to our replicated web services. We can then propagate those schema changes to our replica databases using the Export Replica Changes, Compare Replica Changes, and Import Replica Changes tool within the Distributed Geodatabase toolbox...all of which are not included in Pro. If geodatabase replication tools are no longer available to us, this means we have to publish feature services for all our datasets we want to replicate???...the vast majority of which we have no real reason to ever want to have available as a service. As Thomas Colson mentions above, this would require a lot of server resources just to have these services running, not to mention, it would likely require us to stand up more than one, perhaps several Server machines, or allocate funds to increasing server resources (CPU, RAM, etc..). The offline tools that are built into Pro seem nice for disconnected editing ... however, for us personally, we never use geodatabase replication for offline editing ... as I mentioned, we are using it for moving production data to replicated databases. Instead of moving entire datasets, we are only moving edits between our production and replicated databases, and this workflow has worked very well for us in creating a production environment, an internal read-only environment for non-editors, and a web services environment. Without the currently available one-way replication tools, the only way I see to maintain our current environment with available Pro tools is: Truncate and Append OR Delete and Copy Neither of these options are desirable. In both cases we'd be moving entire datasets, instead of only moving edits.
... View more
10-05-2018
06:18 AM
|
13
|
0
|
18904
|
|
POST
|
Jonathan Farmer Those 2 highlighted ProcessID values do NOT exist within the SDE_process_information table (first screenshot) The engDustControl feature class DOES still exist These 2 locks DO show in the Administer Geodatabase window if using an older version of ArcMap (10.3) (highlighted blue in second screenshot)
... View more
09-25-2018
07:29 AM
|
0
|
1
|
2662
|
|
POST
|
I came across this issue in both Desktop 10.5.1 and Pro 2.2.2 using Sql Server (2014 Standard). I put together a query to try and locate the orphaned records rather than deleting all the rows within the '_lock' tables and SDE_process_information table. In the example below, it seems there are 2 orphaned records within the SDE_table_locks table, resulting in NULL values for the Lock Owner, which is pulled from the SDE_process_information table. Using this query, I assume all I have to do is remove the 2 affected rows within the SDE_table_locks table, rather than truncating all '_lock' tables and the SDE_process_information table, is that correct...? All other locks are finding their corresponding parent process. Below is the sql statement I used, which takes into account all the '_lock' tables (what is shown above is a small sample returned). Perhaps this is useful to others when trying to locate specific records rather than deleting all records within these tables. You can view all locks on the database by uncommenting line 168 (below). where ProcessIDFound = 'N' FYI --- this query does not translate topology and geometric network tables names, they will be returned as stored in the database (ex: T_1_DirtyArea, T_1_PointErrors, etc...) **Note: you may need to adjust schema names AND change line 1 to the name of your enterprise geodatabase (this was written for SQL Server)** use YourDatabaseName;
with
StateLocks as
(
select 'SDE_state_locks' as LockTable
,[l].[sde_id] AS ProcessID
,case
when [p].[sde_id] is null then 'N'
else 'Y'
end as ProcessIDFound
,[l].[state_id] as ForeignID
,case
when [s].[state_id] is null then 'N'
else 'Y'
end as ForeignIDFound
,'SDE_states' as ForeignTable
,cast([s].[state_id] as nvarchar(255)) AS ObjectName
,'Version' as ObjectType
,'state' as LockType
,[p].[owner] as LockOwner
,case [l].[lock_type]
when 'S' then 'shared'
when 'E' then 'exclusive'
end as LockMode
,[l].[lock_time] as DateAcquired
,substring([p].[nodename], 0, charindex(':',[p].[nodename])) as MachineName
,right([p].[nodename], len([p].[nodename]) - charindex(':',[p].[nodename])) as GISVersion
from
--state locks
dbo.SDE_state_locks as l
left join
--process information
dbo.SDE_process_information as p on [l].[sde_id] = [p].[sde_id]
left join
--states
dbo.SDE_states as s on [l].[state_id] = s.[state_id]
),
TableLocks as
(
select 'SDE_table_locks' as LockTable
,[l].[sde_id] as ProcessID
,case
when [p].[sde_id] is null then 'N'
else 'Y'
end as ProcessIDFound
,[l].[registration_id] as ForeignID
,case when [t].[registration_id] is null then 'N' else 'Y' end as ForeignIDFound
,'SDE_table_registry' as ForeignTable
,[t].[table_name] as ObjectName
,'Dataset' as ObjectType
,'schema' as LockType
,[p].[owner] AS LockOwner
,case [l].[lock_type]
when 'S' then 'shared'
when 'E' then 'exclusive'
end as LockMode
,[l].[lock_time] as DateAcquired
,substring([p].[nodename], 0, charindex(':',[p].[nodename])) as MachineName
,right([p].[nodename], len([p].[nodename]) - charindex(':',[p].[nodename])) as GISVersion
from
--table locks
dbo.SDE_table_locks as l
left join
--process information
dbo.SDE_process_information as p on [l].[sde_id] = [p].[sde_id]
left join
--table registry
dbo.SDE_table_registry as t on [l].[registration_id] = [t].[registration_id]
),
ObjectLocks as
(
select 'SDE_object_locks' as LockTable
,[l].[sde_id] as ProcessID
,case
when [p].[sde_id] is null then 'N'
else 'Y'
end as ProcessIDFound
,[l].[object_id] as ForeignID
,case
when [v].[version_id] is null then 'N'
else 'Y'
end as ForeignIDFound
,'SDE_versions' as ForeignTable
,[v].[owner] + '.' + [v].[name] as ObjectName
,'Version' as ObjectType
,'version' as LockType
,[p].[owner] as LockOwner
,case [l].[lock_type]
when 'S' then 'shared'
when 'E' then 'exclusive'
end as LockMode
,[l].[lock_time] AS DateAcquired
,substring([p].[nodename], 0, charindex(':',[p].[nodename])) as MachineName
,right([p].[nodename], len([p].[nodename]) - charindex(':',[p].[nodename])) as GISVersion
from
--object locks
dbo.SDE_object_locks as l
left join
--process information
dbo.SDE_process_information as p on [l].[sde_id] = [p].[sde_id]
left join
--versions
dbo.SDE_versions as v on [l].[object_id] = [v].[version_id]
),
LayerLocks as
(
select 'SDE_layer_locks' as LockTable
,[l].[sde_id] as ProcessID
,case
when [p].[sde_id] is null then 'N'
else 'Y'
end as ProcessIDFound
,[l].[layer_id] as ForeignID
,case
when [y].[layer_id] is null then 'N'
else 'Y'
end as ForeignIDFound
,'SDE_layers' as ForeignTable
,[y].[database_name] + '.' + [y].[owner] + '.' + [y].[table_name] as ObjectName
,'Layer' as ObjectType
,'layer' as LockType
,[p].[owner] as LockOwner
,case [l].lock_type
when 'S' then 'shared'
when 'E' then 'exclusive'
end as LockMode
,[l].[lock_time] as DateAcquired
,substring([p].[nodename], 0, charindex(':',[p].[nodename])) as MachineName
,right([p].[nodename], len([p].[nodename]) - charindex(':',[p].[nodename])) as GISVersion
from
--layer locks
dbo.SDE_layer_locks as l
left join
--process information
dbo.SDE_process_information as p on [l].[sde_id] = [p].[sde_id]
left join
--states
dbo.SDE_layers as y on [l].[layer_id] = [y].[layer_id]
)
--select orphaned locks
select *
from
(
--state locks
select * from StateLocks
union all
--table locks
select * from TableLocks
union all
--object locks
select * from ObjectLocks
union all
--layer locks
select * from LayerLocks
) as q1
where ProcessIDFound = 'N'
... View more
09-18-2018
09:57 AM
|
15
|
5
|
3661
|
|
POST
|
I put together some queries in Sql Server to try and locate the orphaned locks, so I could hopefully narrow down which specific records are the issue, and what table they are located within. Below is a screenshot of the end result query showing there seem to be 2 orphaned lock records within the SDE_table_locks table. The sde_id value found in the SDE_table_locks table is NOT found within the SDE_process_information table ... therefore resulting in NULL values for the Lock Owner. Is it safe to assume, these are the only 2 records that need to be removed, rather than deleting all records within all the lock tables and SDE_process_information table? Below is the entire Sql statement, which takes into account all the '_lock' tables (what is shown above is a small sample returned). Perhaps this is useful to others when trying to locate specific records rather than deleting all records within these tables. You can add the where clause below to the end of the query to filter ONLY the orphan records (if any). The LockTable field should point you to the table where the orphans are found, with the ProcessID value equaling the sde_id value of the orphans. WHERE ProcessIDFound = 'N' FYI --- this query does not translate topology and geometric network tables names, they will be returned as stored in the database (ex: T_1_DirtyArea, T_1_PointErrors, etc...) **Note: you may need to adjust schema names** SELECT *
FROM (
/* STATE LOCKS */
SELECT 'SDE_state_locks' AS LockTable,
l.[sde_id] AS ProcessID,
CASE WHEN p.[sde_id] IS NULL THEN 'N' ELSE 'Y' END AS ProcessIDFound,
l.[state_id] AS ForeignID,
CASE WHEN s.[state_id] IS NULL THEN 'N' ELSE 'Y' END AS ForeignIDFound,
'SDE_states' AS ForeignTable,
CAST(s.state_id AS NVARCHAR(255)) AS ObjectName,
'Version' AS ObjectType,
'state' AS LockType,
p.[owner] AS LockOwner,
CASE l.lock_type WHEN 'S' THEN 'shared' WHEN 'E' THEN 'exclusive' END AS LockMode,
l.[lock_time] AS DateAcquired,
SUBSTRING(p.[nodename], 0, CHARINDEX(':' ,p.[nodename])) AS MachineName,
RIGHT(p.[nodename], LEN(p.[nodename]) - CHARINDEX(':', p.[nodename])) AS GISVersion
FROM
--state locks
dbo.SDE_state_locks AS l
--process information
LEFT JOIN dbo.SDE_process_information AS p ON l.[sde_id]=p.[sde_id]
--states
LEFT JOIN dbo.SDE_states AS s ON l.[state_id]=s.[state_id]
UNION ALL
/* TABLE LOCKS */
SELECT 'SDE_table_locks' AS LockTable,
l.[sde_id] AS ProcessID,
CASE WHEN p.[sde_id] IS NULL THEN 'N' ELSE 'Y' END AS ProcessIDFound,
l.[registration_id] AS ForeignID,
CASE WHEN t.[registration_id] IS NULL THEN 'N' ELSE 'Y' END AS ForeignIDFound,
'SDE_table_registry' AS ForeignTable,
--t.[database_name] + '.' + t.[owner] + '.' + t.[table_name] AS ObjectName,
t.[table_name] AS ObjectName,
'Dataset' AS ObjectType,
'schema' AS LockType,
p.[owner] AS LockOwner,
CASE l.lock_type WHEN 'S' THEN 'shared' WHEN 'E' THEN 'exclusive' END AS LockMode,
l.[lock_time] AS DateAcquired,
SUBSTRING(p.[nodename], 0, CHARINDEX(':' ,p.[nodename])) AS MachineName,
RIGHT(p.[nodename], LEN(p.[nodename]) - CHARINDEX(':', p.[nodename])) AS GISVersion
FROM
--table locks
dbo.SDE_table_locks AS l
--process information
LEFT JOIN dbo.SDE_process_information AS p ON l.[sde_id]=p.[sde_id]
--table registry
LEFT JOIN dbo.SDE_table_registry AS t ON l.[registration_id]=t.[registration_id]
UNION ALL
/* OBJECT LOCKS */
SELECT 'SDE_object_locks' AS LockTable,
l.[sde_id] AS ProcessID,
CASE WHEN p.sde_id IS NULL THEN 'N' ELSE 'Y' END AS ProcessIDFound,
l.[object_id] AS ForeignID,
CASE WHEN v.[version_id] IS NULL THEN 'N' ELSE 'Y' END AS ForeignIDFound,
'SDE_versions' AS ForeignTable,
v.[owner] + '.' + v.[name] AS ObjectName,
'Version' AS ObjectType,
'version' AS LockType,
p.[owner] AS LockOwner,
CASE l.lock_type WHEN 'S' THEN 'shared' WHEN 'E' THEN 'exclusive' END AS LockMode,
l.[lock_time] AS DateAcquired,
SUBSTRING(p.[nodename], 0, CHARINDEX(':' ,p.[nodename])) AS MachineName,
RIGHT(p.[nodename], LEN(p.[nodename]) - CHARINDEX(':', p.[nodename])) AS GISVersion
FROM
--object locks
dbo.SDE_object_locks AS l
--process information
LEFT JOIN dbo.SDE_process_information AS p ON l.[sde_id]=p.[sde_id]
--versions
LEFT JOIN dbo.SDE_versions AS v ON l.[object_id]=v.[version_id]
UNION ALL
/* LAYER LOCKS */
SELECT 'SDE_layer_locks' AS LockTable,
l.[sde_id] AS ProcessID,
CASE WHEN p.[sde_id] IS NULL THEN 'N' ELSE 'Y' END AS ProcessIDFound,
l.[layer_id] AS ForeignID,
CASE WHEN y.[layer_id] IS NULL THEN 'N' ELSE 'Y' END AS ForeignIDFound,
'SDE_layers' AS ForeignTable,
y.[database_name] + '.' + y.[owner] + '.' + y.[table_name] AS ObjectName,
'Layer' AS ObjectType,
'layer' AS LockType,
p.[owner] AS LockOwner,
CASE l.lock_type WHEN 'S' THEN 'shared' WHEN 'E' THEN 'exclusive' END AS LockMode,
l.[lock_time] AS DateAcquired,
SUBSTRING(p.[nodename], 0, CHARINDEX(':' ,p.[nodename])) AS MachineName,
RIGHT(p.[nodename], LEN(p.[nodename]) - CHARINDEX(':', p.[nodename])) AS GISVersion
FROM
--layer locks
dbo.SDE_layer_locks AS l
--process information
LEFT JOIN dbo.SDE_process_information AS p ON l.[sde_id]=p.[sde_id]
--states
LEFT JOIN dbo.SDE_layers AS y ON l.[layer_id]=y.[layer_id]
) AS lk
... View more
09-18-2018
09:46 AM
|
4
|
4
|
2662
|
|
POST
|
Does anybody else have an issue where when trying to view enterprise locks, Pro displays the errors below and crashes? This doesn't happen on all our enterprise databases, just certain ones. Is there something specific in the database to look for where this is happening? System Information: Pro version: 2.2.2 RDBMS: Sql Server 2014 Standard
... View more
09-14-2018
07:09 AM
|
1
|
7
|
3529
|
|
POST
|
Yes, using SQL Server (2014 Standard). No other RDBMS to test here.
... View more
09-10-2018
10:50 AM
|
0
|
3
|
2089
|
|
POST
|
Is there a way to sort / order datasets in the Catalog Pane in ArcGIS Pro? We have an enterprise geodatabase that contains a lot of feature classes and tables that have a naming convention in order to make them easy to find, but for some reason in the Catalog Pane in ArcGIS Pro, datasets don't seem to always be sorted or ordered in alphabetical order. Below is a sample screenshot of our database and the way datasets are presented. The database and schema names are all the same, so why are datasets that starts with 'a' below those that start with 's'? We have other datasets that start with the prefix 'asr' that are found at the top of the dataset list, why aren't these datasets grouped along with those? FYI --- I'm using ArcGIS Pro 2.2.2
... View more
09-10-2018
10:20 AM
|
1
|
5
|
2298
|
|
POST
|
That's a good question! ... and something I hadn't really considered. Here is some testing I did this morning, and the trigger as above will NOT work with copying and pasting features ... the ID value will remain the same because the ID value of the inserted row is NOT NULL. I altered the trigger to use the following logic, with sample testing shown below, and the trigger SQL at the very end. As always, test on your end to make sure you're getting the desired outcome!!! Get the inserted OID value Get the inserted ID value Get the corresponding base table OID value of inserted row based on inserted ID value, if any. If none, set variable to -1 (will not exist) Get the corresponding add delta table OID value of inserted row based on inserted ID value, if any. If none, set variable to -1 (will not exist) Create default 'flag' value of 0 If inserted ID value is NULL, add 1 to the existing flag value If inserted OID value does NOT match corresponding base table OID value AND base table OID value does not equal -1 (i.e., it exists), add 1 to the existing flag value If inserted OID value does NOT match corresponding add delta table OID value AND add delta table OID value does not equal -1 (i.e., it exists), add 1 to the existing flag value Check if the existing flag value is greater than 0, indicating the ID value should be changed Grab the next sequence value Update the inserted ID value to the next sequence value Start Inserted 2 points new features --- features 1027, 1028 (red) New features in add delta table Copied, pasted, and moved (a few times to register delta table inserts) feature 1027 --- copied feature is 1029 (blue) Add delta table after copy, paste, and move ---> new ID value (1029) for copied feature that existed in delta table Copied, pasted, and moved (again, a few times) feature 1003 --- only existed in the base table --- copied feature is 1030 (blue) Add delta table after copy, paste, and move --- new ID value for copied feature that only existed in the base table Moved around existing features a few times to make sure their ID values didn't change Add delta table after moving/editing existing features (1001, 1002, 1003) Add delta table after saving edits --- leaving last edits (2 inserts, 2 copies, 3 modifies) --- new IDs for inserts and copies, IDs remained as-is for existing features CREATE TRIGGER [dbo].[TriggerName]
ON [DbName].[SchemaName].[AddDeltaTable] -- add delta table name
AFTER INSERT, UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- delcare variables
DECLARE
@seq int, -- sequence value
@aOID int, -- add delta table OID value
@bOID int, -- base table OID value
@iOID int, -- inserted OID value
@iId int, -- inserted ID value
@newId int -- flag for whether or not a new ID value is needed
-- set inserted variables
SET @iOID = (SELECT TOP(1) i.OBJECTID
FROM [DbName].[SchemaName].[AddDeltaTable] a, inserted i
WHERE a.OBJECTID = i.OBJECTID AND a.SDE_STATE_ID = i.SDE_STATE_ID)
SET @iId = (SELECT TOP(1) i.ID
FROM [DbName].[SchemaName].[AddDeltaTable] a, inserted i
WHERE a.OBJECTID = i.OBJECTID AND a.SDE_STATE_ID = i.SDE_STATE_ID)
-- set base oid variable
SET @bOID = (SELECT TOP(1) b.OBJECTID
FROM [DbName].[SchemaName].[BaseTable] b
WHERE b.ID = @iID)
IF @bOID IS NULL
BEGIN
SET @bOID = -1
END
-- set add delta oid variable
SET @aOID = (SELECT TOP(1) a.OBJECTID
FROM [DbName].[SchemaName].[AddDeltaTable] a
WHERE a.ID = @iID)
IF @aOID IS NULL
BEGIN
SET @aOID = -1
END
-- ============================================================
-- RUN CHECK OF INSERTED ID VALUE
-- ============================================================
-- set default value for new id flag
SET @newId = 0
-- if inserted ID value is NULL, update ID field
IF @iId IS NULL
BEGIN
SET @newId = @newId + 1
END
-- check if inserted OID equals base OID
IF @iOID <> @bOID AND @bOID <> -1
BEGIN
SET @newId = @newId + 1
END
-- check if inserted OID equals add delta OID
IF @iOID <> @aOID AND @bOID <> -1
BEGIN
SET @newId = @newId + 1
END
-- ============================================================
-- CHECK IF INSERTED ID VALUE SHOULD BE UPDATED
-- ============================================================
IF @newId > 0
BEGIN
-- get next sequence value
SET @seq = NEXT VALUE FOR [DbName].[SchemaName].[Sequence]
-- update sequence field
UPDATE a
SET a.ID = @seq
FROM [DbName].[SchemaName].[AddDeltaTable] a, inserted i
WHERE a.OBJECTID = i.OBJECTID AND a.SDE_STATE_ID = i.SDE_STATE_ID
END
END
... View more
09-06-2018
10:56 AM
|
3
|
7
|
3620
|
|
POST
|
I attended the Esri UC this past week and was a little surprised to learn that Distributed Geodatabase tools are not supported in Pro and there is currently no plan to implement them. I understand Pro already has tools for downloading a map and working offline, and that seems fine for a replacement for check-in / check-out replicas. However, we rely pretty heavily on the one-way and two-way replica scenarios within our organization. As an example, we have multiple editing geodatabases typically divided out by departments. As part of our daily workflow, we use the synchronize changes tool to push edits from our production editing geodatabases to two replicated geodatabases, one that is an internal read-only geodatabase where non-editors can read other departmental data and a second that is used exclusively for web services. We are very happy with this workflow for a number of reasons: The number of users that can connect to a production editing database is relatively small and controlled Production database size stays relatively small High isolation of data ... for schema changes or other processes that require an exclusive schema lock, we only have to notify a small number of users. We can then make the necessary changes and NOT affect any web services or users that are not production editors. In another example, we have a two-way replica established with a City government in order to replicate 911 datasets between our organizations. This workflow is important to both organizations as it greatly reduces the time it takes to compile datasets for dispatch updates and provides both organizations with current information in on-premise relational databases that are used for other business functions. I'd like to hear from Esri folks what is being done to provide the same type of workflow with Pro tools? I don't see any other type of workflow that can be used with Pro to accomplish the same type of workflow. Copying datasets is NOT a realistic solution when replication is a much better solution. Neither is truncating or appending data. In both of these scenarios your moving entire datasets where replication will only move edits. Again, I want to emphasize this is using one-way or two-way replication and NOT check-in / check-out. If there are other tools within Pro or at the Enterprise GIS platform that provide the same workflow, I'd be very interested in learning more about them. Otherwise, I have to think I'm not the only person that's really disappointed to learn that replication / distributed geodatabase tools are not being implemented with Pro.
... View more
07-16-2018
07:37 AM
|
6
|
14
|
9994
|
|
POST
|
Ruchira Welikala, I was reading through the SQL statement I posted above and noticed a couple things that are omitted in the triggers we use for versioned datasets. I added the SDE_STATE_ID field in the where clauses because this is a key field in the add delta table. Simply using the OBJECTID field can return many records in the add delta table (because there could be multiple edits on a single feature), but using BOTH the OBJECTID field and the SDE_STATE_ID field should return a unique record in the add delta table. I include TOP(1) in the SELECT statement to check whether or not the ID field is empty. Below is an updated trigger t-SQL statement, as well as sample records in the add delta table. I have gotten the error you mention before, and I believe making these adjustments cleared things up. Using this trigger I was able to insert 3 separate features and edit them several times. CREATE TRIGGER [dbo].[TriggerName]
ON [DatabaseName].[SchemaName].[AddDeltaTable] -- add delta table name
AFTER INSERT, UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Delcare variables
DECLARE
@seqId int
-- =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
-- UPDATE ID FIELD BASED ON SEQUENCE VALUE
-- =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
-- check if inserted record has a NULL ID value
IF (SELECT TOP(1) i.ID
FROM [DatabaseName].[SchemaName].[AddDeltaTable] a, inserted i
WHERE a.OBJECTID = i.OBJECTID AND a.SDE_STATE_ID = i.SDE_STATE_ID) IS NULL
BEGIN
-- get next sequence value
SET @seqId = NEXT VALUE FOR [DatabaseName].[SchemaName].[SequenceName]
-- update sequence field
UPDATE a
SET a.ID = @seqId
FROM [DatabaseName].[SchemaName].[AddDeltaTable] a, inserted i
WHERE a.OBJECTID = i.OBJECTID AND a.SDE_STATE_ID = i.SDE_STATE_ID
END
END
... View more
06-27-2018
08:50 AM
|
2
|
1
|
4032
|
|
POST
|
Jonathan Quinn, Thanks for your reply, it helps clear things up a bit. I have a few follow-up questions based on some of your responses: I do like the idea of our Portal and Server using the same identity store. As you mention, this can sometimes cause confusion for our users, whereas they are using one set of credentials for AGO and another set of credentials for accessing secured services. On Server, we currently use the built-in store for users and roles, meaning we are pretty flexible in allowing users from inside and outside our organization to view secure services if need be. If Portal and Server are using the same user store, is that user store allowed to have BOTH integrated enterprise (domain) accounts AND named user accounts? We like having the ability to use enterprise accounts in AGO for Organizations for users who have a domain account, however, there are some field workers who DO NOT have a domain account and we need the ability to create a named AGO account for them. Is this type of user store available for Portal as well...and if it is...the same user store gets passed along to our Server if federated, correct? Is there something analogous to Server 'roles' within Portal? I get that the user store is passed off to Portal, but within Server, using the built-in user store, users belong to roles and roles are what get used when assigning security to a service/folder. How are services made secure if using a Federated Server with Portal? How is a hosting server different from the Data Store?...or are they one in the same? I thought the point of the Data Store is to give users the ability to create hosted feature services, run analysis tools, drag and drop files that contain geographic content, etc... Is a hosting server configured somewhere within Portal?...or during install? Is a hosting server necessary? How are user accounts in Portal and AGO for Organizations tracked? For example, say we have 100 named user accounts available for AGO for Organizations. I already have an existing user account in AGO using my enterprise account. If I add my enterprise account to Portal, does that count as 2 accounts within our 100 user pool, even though it's the same credentials? Along the same lines as the question above, how are Pro licenses managed? Currently, all our Pro licenses are managed through AGO. When we install Portal, I'm assuming you can manage Pro licenses through there as well, just like you can in AGO, correct? Would we need to 'de-activate' / 'disable' a Pro license on AGO and re-configure Pro to look at Portal for licensing? Do you HAVE to federate your Server with Portal in order to have published services pass through Portal and be published directly to your Server? Or, does federating your Server with Portal simply mean the user store of Portal is passed to your Server?
... View more
03-12-2018
11:06 AM
|
0
|
1
|
3450
|
|
POST
|
We are looking to roll out a base deployment of ArcGIS Enterprise and we're looking to fully understand all the pieces, and rather than read through a bunch of documentation, I thought I'd try GeoNet first to see if I could explain our current architecture and get some opinions on how we should move forward... Our current architecture: ArcGIS Server Advanced with Image Server role (10.5.1) Web Adaptor 10.5.1 installed on reverse proxy configured to use Server listed above Do NOT have Portal installed Do NOT have Data Store installed Use ArcGIS Online for Organizations for managing Web GIS (all web maps, Pro licensing, users, Open Data) Use Web AppBuilder Developer Edition for creating apps that are self hosted on local web server The main piece of ArcGIS Enterprise we are struggling to understand is Portal, and where it fits into our current architecture and workflow. As mentioned, we currently use AGO for Organizations for managing all our Web GIS 'stuff', while publishing services to our ArcGIS Server. In order to start fully migrating to Pro, and to be able to publish services using Pro, as I understand it, we need to have Portal installed. I have always thought of Portal as AGO for Organizations installed locally, so I'm not fully understanding how we would use Portal...? I think we are pretty pleased with using AGO for Organizations to manage our Web GIS (no maintenance on our end, etc...) but if we have to use Portal to publish with Pro, so be it. My main questions are: Can we use Portal to pass through our published services to our GIS Server? Do we need to migrate any of our AGO for Organizations user accounts to Portal? What is a federated ArcGIS Server?...and does it provide us any benefit? What is a hosting server?...and does it provide us any benefit? Can the Data Store and Portal be placed on the same server? I doubt we would publish many hosted services that would use the Data Store. Does Portal need its own Web Adaptor? If so, can it be placed on the same proxy server as the one we use for our GIS Server? I understand some of these questions can probably become quite involved, but I'm assuming (perhaps that's bad on my part) we aren't the only organization that has this type of architecture (Server + AGO for Organizations) and are wondering how Portal and the Data Store fit into our future. Thanks!!!
... View more
03-12-2018
09:14 AM
|
7
|
4
|
4597
|
|
IDEA
|
Using ArcGIS / arcpy tools...I can do: 1) Domain to Table --- and then 2) Table to Domain This should work, but seems like there should be a tool to do it in one step, not two.
... View more
03-06-2018
08:53 AM
|
1
|
0
|
10077
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 02-03-2026 09:59 AM | |
| 1 | 03-02-2026 11:02 AM | |
| 6 | 02-18-2026 04:58 PM | |
| 2 | 02-18-2026 05:01 PM | |
| 1 | 12-09-2025 07:06 AM |
| Online Status |
Offline
|
| Date Last Visited |
a month ago
|